xargc命令

1、xargc命令:給其他命令傳遞參數的一個過濾器;組合多個命令的一個工具。

xargs命令可以通過管道接受字符串,並且將接收到的字符串通過空格分割(默認情況下時空格分割)成許多的參數,然後將參數傳遞給後面的命令,作爲後面的命令的命令行參數。

2、一個命令獲取參數一般有兩種情況:通過命令行參數或者標準輸入。

Linux中很多命令都是從命令行參數中獲取參數,然後從標準輸入中讀取,反映在程序中,

<1>命令行參數是通過main(int argc,char* argv[],char* envp[])的參數中獲得的,

<2>而標準輸入則是通過通過標準輸入函數(scanf)讀取到的,它們獲取的地方不一樣。標準輸入是有緩衝區的,

(1)、cat和管道一起使用:

當cat後面有參數時,不去標準輸入中讀:

a.txt存在時,直接讀取


當b.txt文件不存在時,cat提示文件不存在


下面這條從標準輸入中讀取


用參數-來指定去從標準輸入中讀取


直接使用cat,程序等待輸入,此時也是從標準輸入中得到的內容


只是顯示a.txt中的內容,雖然指定了-去標準輸入裏去讀,結果卻只在文件中進行了讀取。


當使用echo 'hello' | grep a.txt - 時,grep會同時處理標準輸入中的hello也會從a.txt中搜索。

cat和grep的不同就在於當指定了-選項時(既要去標準輸入中讀取時),當cat後有文件時,只會讀文件內的內容,而grep標準輸入裏的內容和文件裏的內容都會處理。

(2)、xargs和管道的使用及對比


對比


(3)、xargs的用法:

①默認情況下xargs將其標準輸入中的內容以空格(包括Tab、回車換行)分割成多個,然後當做命令行參數傳遞給其後面的命令。


②-d選項,用於指定分割符。


③-p選項,使得xargs命令不會馬上執行後面的命令,而是輸出即將要執行的完整命令(包括命令以及傳遞給命令的命令行參數)來詢問是否執行,只有輸入y才能繼續執行。


④-n選項,用於將xargs產生的命令行參數,每次傳遞n個給後面的命令執行。


⑤-E選項,指定一個字符串,當解析出很多命令行參數的時候,如果搜索到-E所指定的命令行參數時,則只會將-E指定的命令行參數之前的傳遞給後面的命令。


但是-E選項在-d選項存在時不起作用


⑥與find命令一起使用

find默認情況下輸出結果是每條記錄後面加上換行符


(4)、總結:

管道是實現將前面的標準輸出作爲後面的標準輸入!

xargs是將標準輸入作爲命令行參數!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章