管道命令和xargs的區別 經典解釋

2021-08-11 22:32:12 字數 1013 閱讀 6657

一直弄不懂,管道不就是把前乙個命令的結果作為引數給下乙個命令嗎,那在 | 後面加不加xargs有什麼區別

newuserff 寫道:

懶蝸牛gentoo 寫道:

管道是實現「將前面的標準輸出作為後面的標準輸入」

xargs是實現「將標準輸入作為命令的引數」

你可以試試執行:

**:echo "--help"|cat

echo "--help"|xargs cat

看看結果的不同。

試過了,依然不是很確定的明白到底是什麼意思,自己再探索一下看看把

如果你直接在命令列輸入cat而不輸入其餘的任何東西,這時候的cat會等待標準輸入,因此你這時候可以

通過鍵盤輸入並按回車來讓cat讀取輸入,cat會原樣返回。而如果你輸入--help,那麼cat程式會在標準輸出上

列印自己的幫助文件。也就是說,管道符 | 所傳遞給程式的不是你簡單地在程式名後面輸入的引數,它們會被

程式內部的讀取功能如scanf和gets等接收,而xargs則是將內容作為普通的引數傳遞給程式,相當於你手寫了

cat --help

來自:

補充解釋:

在乙個目錄中有如下三個檔案

a.c        b.c            c.c

find   . /   -print命令會列印出三個檔名

find . /    -print | grep a.c  只會列印出a.c這個檔案

如果只輸入命令grep a.c

那麼你在鍵盤中只輸入a.c字串時,a.c會被列印兩次,否則只列印你輸入的字元

如果要找三個檔案中,那個檔案包括有hello字元

find ./ -print | xargs grep hello

總結:管道符後不加xargs相當於先將xargs後面的命令回車執行一下再從鍵盤裡輸入

管道符前面命令執行的結果內容

加上xargs 相當於直接從鍵盤輸入管道符前面命令執行的結果內容再回車

再總結一下,就是回車的先後順序不太一樣。

管道命令和xargs的區別 經典解釋

一直弄不懂,管道不就是把前乙個命令的結果作為引數給下乙個命令嗎,那在 後面加不加xargs有什麼區別 newuserff 寫道 懶蝸牛gentoo 寫道 管道是實現 將前面的標準輸出作為後面的標準輸入 xargs是實現 將標準輸入作為命令的引數 你可以試試執行 echo help cat echo ...

管道命令和xargs的區別 經典解釋

source 一直弄不懂,管道不就是把前乙個命令的結果作為引數給下乙個命令嗎,那在 後面加不加xargs有什麼區別 newuserff 寫道 懶蝸牛gentoo 寫道 管道是實現 將前面的標準輸出作為後面的標準輸入 xargs是實現 將標準輸入作為命令的引數 你可以試試執行 echo help ca...

管道命令xargs

在研究hadoop的過程中,遇到乙個小難題。問題描述 我需要將資料夾a下的檔案拷貝到資料夾b中,但是以hadoop開頭的檔案不要拷貝。問題解決 ls a grep v hadoop xargs t i cp b 解釋 grep v 是反選。xargs命令的功能是將管道傳來的的資訊作為引數賦予馬上要執...