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

检查数组