bash - 创建临时文件并编辑内容并返回文件的路径
问题描述
我希望使用创建一个临时文件mktemp
,然后在创建后编辑它的内容(使用您的首选编辑器;我使用过micro
),然后当完成即保存/退出该过程时,它应该将文件的路径输出到标准输出/管道/替换为争论。
除了打印创建和使用的文件的路径外,我什么都能做。我不想依赖编辑器在关闭时输出路径的能力,以便可以使用任何编辑器。
我正在尝试什么。
# creates a file. passes it's path to editor to open it.
# then we can make changes and save. finally quit.
> micro (mktemp)
但是输出什么都不是,我希望它是传入的原始路径。我该怎么做?
这些是示例用例,它们不起作用,因为我无法在保存后输出路径。
# e.g. a full test case; create tmp file, fill it, read it, find it...
> micro (mktemp) | cat | grep 'find me*!'
# or you want to count the words
> micro (mktemp) | tail | wc
# another way it should work as well! i.e. pros-sub
> cat (micro (mktemp)) | sed 's/red/green/g'
# bonus points (I mean it, 50 extra karma). You might need to restructure the chain
# i.e. ->create tmp, fill it, save it, read it, manipulate it, save it
# back to disk (append/replace)
> cat (micro (mktemp)) | sed ' s/red/green/g' >> <original_file_path>
我正在工作,fish
因为我的眼睛很红,并且正在寻找解决方案。但是,如果您bash
已经知道它,会很乐意看到它并且会很有用。所以我会标记两者
解决方案
在鱼壳中,您可以在此处定义一个函数mt
:
function mt
set -l path (mktemp)
micro $path </dev/tty >/dev/tty
cat $path
end
现在您的管道可以使用mt
:
mt | wc
推荐阅读
- html - 当 ID 不存在时,使用“elementbyID”进行抓取如何返回 0 值?
- python - 如何在后台使用依赖的 shell 命令运行 python 脚本
- c# - 如何将数据写入文本文件一次是相同的数据?以及如何回读和分配?
- ios - 尝试将多个值附加到 Swift 字典中的同一个键
- reactjs - 如何使用 JEST 模拟视频暂停功能?
- mongodb - 在 mongodb 中具有不同的 Group By
- three.js - FBXLoader:我不能加载多个对象
- c# - 更改 DataContext 时,CollectionViewSource 排序在 DataGrid 中停止工作
- xslt - 将变量分配给在 xslt 的循环中选择的值
- c# - 带有大写十六进制字符的 HttpUtility.UrlEncode