Linux 命令的 cli 管道输出到另一个命令
Linux cli pipe output of command into another command
我正在使用 find 命令搜索文件。有没有办法获取 find 命令的输出并将其传递给 vim?
$ > find . -name *.txt
./file1.txt
./file2.txt
./file3.txt
./file4.txt
有没有简单(快捷)的方法
vim <some command>
无需输入即可获取 file4.txt(或之前的文件之一)?
我正在寻找类似于 bash 中的 !!
命令的解决方案。
如果要打开找到的文件,请使用命令替换:
vim $(find ...) -p
如果要打开查找的输出,请使用进程替换:
vim <(find ...)
bash 内置命令 mapfile
可能就是您要找的。它将输出的 行 读取到数组中。
mapfile -t files < <(find . -name *.txt)
需要从进程替换重定向以避免子 shell。
然后
- 第一个文件在
"${files[0]}"
- 最后一个文件在
"${files[-1]}"
- 所有文件都是
"${files[@]}"
用declare -p files
检查数组
我正在使用 find 命令搜索文件。有没有办法获取 find 命令的输出并将其传递给 vim?
$ > find . -name *.txt
./file1.txt
./file2.txt
./file3.txt
./file4.txt
有没有简单(快捷)的方法
vim <some command>
无需输入即可获取 file4.txt(或之前的文件之一)?
我正在寻找类似于 bash 中的 !!
命令的解决方案。
如果要打开找到的文件,请使用命令替换:
vim $(find ...) -p
如果要打开查找的输出,请使用进程替换:
vim <(find ...)
bash 内置命令 mapfile
可能就是您要找的。它将输出的 行 读取到数组中。
mapfile -t files < <(find . -name *.txt)
需要从进程替换重定向以避免子 shell。
然后
- 第一个文件在
"${files[0]}"
- 最后一个文件在
"${files[-1]}"
- 所有文件都是
"${files[@]}"
用declare -p files