编辑

编辑

此链接是相关的bash 的替换和管道有什么区别但我不太明白所说的一切。

command1 | command2管道命令和扩展命令有什么区别command2 $(command1)?例如

vi $(find /home | grep xyzzy)

将结果输出到 vi 进行编辑,而

find /home | grep xyzzy | vi

似乎不适合我。但我不明白根本的区别。

编辑

其他相关帖子

进程替换和管道

进程替换和管道

答案1

A|B

执行 A 和 B(并行),A 的标准输出被送入 B 的标准输入。

A $(B)

shell 首先执行 B,收集 B 的标准输出,然后执行 A,但对于此执行,将各个单词分配给 A 的 ARGV 向量(即 A 可以通过 C 和其他语言中已知的常用 argv 机制访问这些单词)。

除了在这两种情况下都涉及两个程序 A 和 B 之外,我没有看到它们之间有任何相似之处。

答案2

第一个扩展为vi <list_of_filenames>.

第二个直接将文件名通过管道传输到vi.想必,vi不会这样工作。您当然可以通过管道将文本传递给vim,但这会被解释为要处理的文本,而不是文件名本身。 (您必须使用vim -。请参阅 参考资料man vim来了解更多信息。)

相关内容