在工作中經常需要書寫shell腳本來自動化運維系統,那麼肯定經常會需要用到管道和xargs命令。
我們知道Linux命令可以從2個地方讀取要處理的内容,分别是:1). 命令行參數 2). 标準輸入。但是我們需要注意的是1). 有些命令不支持标準輸入 2). 若命令同時支持命令行參數和标準輸入,則命令行參數優先級大于标準輸入。
管道通常用“|”連接多個命令,主要作用就是将上一個命令的标準輸出作為下一個命令的标準輸入。簡單的說就是凡是支持标準輸入的命令都可以使用管道。
xargs命令用于将标準輸入的内容按一定的規則(默認以空格、TAB、換行分割)分割成多個小塊,傳遞給要執行的命令作為其參數來執行。簡單的說就是xargs是用來執行命令的,但是被執行命令的參數由xargs來構建。默認被執行的命令為echo。
管道和xargs的區别,可以通過以下兩個命令輸出的結果來展示:
xargs用法
基礎語法:
xargs [選項] [被執行命令] [被執行命令初始化參數]
常用選項:
-d 分割符:默認情況下,xargs使用空格、TAB、換行符作為分割符号來将标準輸入中的内容切割成小塊,該選項用于指定其他分割符号。隻支持指定單個字符。
-0:以數字0作為選項表示用"\0"來分割标準輸入中的内容。該選項一般和find命令一起使用。因為Linux系統中允許文件名中帶空格。find命令中參數-print0會以"\0"來分割文件名。
-E EOF字符:指定标準輸入的EOF(結束)字符,指定後一旦xargs讀取到該字符則後續輸入内容不再讀取。若未指定則整個标準輸入内容都讀取。注:該選項與不能與-d選項一起使用。
-p:提示用戶确認是否需要執行指令,輸入"Y"或"y"确認執行。
-t:打印要執行的命令,與“-p”一起使用可以邊打印邊确認執行命令。
-n 數字:指定每個被執行的命令使用的參數個數,默認所有都傳遞為參數。
-L 數字:指定每個執行的命令使用幾行參數。
-I 替代字符:被執行的命令參數中,xargs默認用“{}“來表示參數,通過該選項可以指定别的字符作為替代字符。
-P 數字:默認xargs使用一個進程來執行命令,也就是若命令執行多次,則必須等上一個命令執行完後才能執行下一次。該選項用于指定執行命令的進程數。
總結xargs将标準輸入中的空白符(空格、TAB、換行符)替換成空格,多個連續的空白符隻替換成一個;
xargs将替換後的标準輸入内容,按空格切割成多個小塊;
xargs将切割後小塊參數,按指定個數(-n選項)依次傳遞給被執行命令作為參數。
,公衆号【web說】不局限于web知識分享。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!