Bash
管道和命令擴展的區別
這個連結是相關的 替換和管道到 bash 有什麼區別,但我不太理解所說的一切。
command1 | command2
管道命令與擴展命令有什麼區別command2 $(command1)
?例如vi $(find /home | grep xyzzy)
將結果吐出到 vi 進行編輯,而
find /home | grep xyzzy | vi
似乎對我不起作用。但我不理解根本區別。
編輯
其他相關文章
A|B
執行 A 和 B(並行),並將 A 的標準輸出饋送到 B 的標準輸入。
A $(B)
shell首先執行B,收集B的標準輸出,然後執行A,但是對於這個執行,將單個單詞分配給A的ARGV向量(即A可以通過C和其他語言中已知的常用argv機制訪問這些單詞)。
除了在這兩種情況下都涉及兩個程序 A 和 B 之外,我看不出它們之間有任何相似之處。
第一個擴展為
vi <list_of_filenames>
。第二個直接將文件名通過管道傳輸到
vi
. 估計vi
不會這樣工作。您當然可以將文本通過管道傳輸到vim
,但這被解釋為要處理的文本,而不是文件名本身。(您必須使用vim -
。有關man vim
詳細資訊,請參閱。)