我對此非常困惑。需要一些澄清。瞭解UNIX命令xargs
例1:
pgrep string | xargs ps
例2:
find . | xargs grep whatever
從例1,我收集是這樣:
搜索一個 「串」,這是運行過程的名稱的一部分,並返回所有匹配的process-id到'xargs ps' - >它只是附加PS的比賽(這是進程的ID本身),以獲得輸出相同:
ps <processid>
有人能解釋xargs的確實在這種情況下?
從例2,我收集是這樣:
這是從當前工作目錄中尋找一些「串」遞歸。 在這裏,'xargs'的工作方式到底如何?我認爲'xargs'重複將數據從標準輸入附加到xargs(通常是UNIX命令本身)的'參數'。
從xargs的()手冊頁:
xargs的讀取從標準輸入項目,由空格分隔(可 保護與雙或單引號或反斜槓)或換行符和 執行命令(默認爲/ bin/echo),其中任何 初始參數後跟從標準輸入讀取的項目一次或多次。標準輸入上的空白行 被忽略。
xargs的作用類似於「命令託換」(與巴什至少)得到的ARG_MAX當前值。它將多行結果(垂直)轉換爲標記參數的單行列表(水平)。 (請注意,在將其傳遞給xargs之前,您可能會過濾一些結果(使用sed for ex))。 Plus xargs處理Linux內核2.6.23之前可能會出現的«_too much arguments_»錯誤(參見[wikipedia](https://en.wikipedia.org/wiki/Xargs))。這裏是[另一個有用的線程](http://unix.stackexchange.com/questions/24954/when-is-xargs-需要) – Stphane