此链接是相关的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
来了解更多信息。)