Bash

管道和命令擴展的區別

  • December 19, 2018

這個連結是相關的 替換和管道到 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詳細資訊,請參閱。)

引用自:https://unix.stackexchange.com/questions/435644