濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Linux xargs命令的使用

Linux xargs命令的使用

熱門標(biāo)簽:宿州防封外呼系統(tǒng)廠家 電銷機(jī)器人對(duì)公司貢獻(xiàn) 智能外呼系統(tǒng)如何部署 蘭州語音電銷機(jī)器人軟件 電話機(jī)器人服務(wù)差 高德地圖標(biāo)注在建線路 山東400電話如何辦理 濟(jì)源電話外呼系統(tǒng)怎么樣 ai電銷機(jī)器人 如何開發(fā)

1.功能:

xargs可以將stdin中以空格或換行符進(jìn)行分隔的數(shù)據(jù),形成以空格分隔的參數(shù)(arguments),傳遞給其他命令。因?yàn)橐钥崭褡鳛榉指舴?,所以有一些文件名或者其他意義的名詞內(nèi)含有空格的時(shí)候,xargs可能會(huì)誤判。簡單來說,xargs是給其他命令傳遞參數(shù)的一個(gè)過濾器,是構(gòu)建單行命令的重要組件之一。

之所以要用到xargs,是因?yàn)橛捎诤芏嗝畈恢С质褂霉艿纜來傳遞參數(shù),例如:

find /sbin -perm +700 |ls -l     //這個(gè)命令是錯(cuò)誤,因?yàn)闃?biāo)準(zhǔn)輸入不能作為ls的參數(shù)
find /sbin -perm +700 |xargs ls -l  //這樣才是正確的

2.命令格式

xargs [選項(xiàng)] [command]

3.選項(xiàng)說明:

-0:如果輸入的stdin含有特殊字符,例如反引號(hào)`、反斜杠\、空格等字符時(shí),xargs可以將它還原成一般字符。為xargs的默認(rèn)選項(xiàng)。
-e <flag>,-E <flag>,--eof=<eof-str>:eof是end of file string的意思。flag可以是一個(gè)字符串或者是由空格分隔的多個(gè)字符串,當(dāng)xargs分析到這個(gè)flag時(shí),就會(huì)停止工作。見示例2。
-p:當(dāng)每次執(zhí)行一個(gè)argument的時(shí)候詢問一次用戶。
-n <num>:表示命令在執(zhí)行的時(shí)候一次使用的argument的個(gè)數(shù),由num指定,默認(rèn)是用所有的參數(shù)。
-t:表示先打印命令,然后再執(zhí)行。
-a <file>:從文件中讀入作為sdtin。
-i[replace-str]:告訴xargs可以使用{}代替從標(biāo)準(zhǔn)輸入讀取的參數(shù),可以指定替代字符串replace-str,如果沒有指定,默認(rèn)為{}。建議使用-I,其符合POSIX標(biāo)準(zhǔn)。
-I [replace-str]:將xargs的輸出每一項(xiàng)參數(shù),單獨(dú)賦值給后面的命令,參數(shù)需要用指定的代替字符串replace-str代替,也就是說replace-str不可缺省,必須顯示指明,可以使用{} $ @等符號(hào),其主要作用是當(dāng)xargs  command后有多個(gè)參數(shù)時(shí),調(diào)整參數(shù)位置。例如:find . -name "*.txt"|xargs -I {} cp {} /tmp/{}.bak。
-r:或者--no-run-if-empty,當(dāng)xargs的輸入為空的時(shí)候則停止xargs,不用再去執(zhí)行后面的命令了,-r是xargs的默認(rèn)選項(xiàng)。
-s <num>:命令行的最大字符數(shù),指的是xargs后面那個(gè)命令的最大命令行字符數(shù),包括命令、空格和換行符。每個(gè)參數(shù)單獨(dú)傳入xargs后面的命令。見示例4。
-L <line_num>:設(shè)置標(biāo)準(zhǔn)輸入中最大的行數(shù)作為命令每一次執(zhí)行的參數(shù)。見示例5。
-d <delim>, --delimiter=<delim>: xargs處理標(biāo)準(zhǔn)輸入默認(rèn)是按換行符和空格作為分隔符,輸出arguments的分隔符是空格,這里修改xargs處理標(biāo)準(zhǔn)輸入時(shí)的分隔符。
-x:eXit的意思,主要是配合-s使用,當(dāng)命令行字符數(shù)大于-s指定的數(shù)值時(shí),退出xargs。
-P:修改最大的進(jìn)程數(shù),默認(rèn)是1,為0時(shí)候?yàn)閍s many as it can。該選項(xiàng)比較少用,目前還不清楚該用法。

4.用法示例

(1)將shell的特殊字符還原為一般字符。

[b3335@MIC ~]$ echo '`0123`4 56789'|xargs -t echo
echo `0123`4 56789 
`0123`4 56789

如果直接進(jìn)行如下操作,會(huì)報(bào)無法找到命令01234的錯(cuò)誤,因?yàn)榉匆?hào)在shell中會(huì)將01234作為一個(gè)命令來執(zhí)行,但是01234不是一個(gè)命令。-t表示先打印命令,然后再執(zhí)行。

[b3335@MIC ~]$ echo `01234` 56789
-bash: 01234: command not found
56789

(2)設(shè)置xargs讀入?yún)?shù)時(shí)的結(jié)束標(biāo)識(shí),以逗號(hào)結(jié)束。這里要注意結(jié)束標(biāo)志必須要是單獨(dú)的字段,即以空格或者換行符分隔的字段。

[b3335@MIC ~]$ echo 01234 , 56789|xargs -E ","
01234

(3)使用rm、mv等命令同時(shí)操作多個(gè)文件時(shí),有時(shí)會(huì)報(bào)”argument list too long”參數(shù)列表過長的錯(cuò)誤,此時(shí)可以使用xargs來解決。xargs將標(biāo)準(zhǔn)輸入的字符串分隔后,單獨(dú)作為參數(shù)傳遞給后面的命令。例如,將當(dāng)前目錄的所有文件添加后綴名。

ls | xargs -t -i mv {} {}.bak

#選擇符合條件的文件
ls|grep -E "201701|201702|201703|201704|201705|201706|201707|201708|201709|201710" |xargs -i mv {} {}.bak

(4)設(shè)置命令行的最大字符數(shù)。參數(shù)默認(rèn)一個(gè)一個(gè)單獨(dú)傳入命令中執(zhí)行。

[b3335@MIC test]$ echo "01234 56789"|xargs -t -s 11
echo 01234 
01234
echo 56789 
56789

(5)設(shè)置標(biāo)準(zhǔn)輸入中每次多少行作為命令的參數(shù),默認(rèn)是將標(biāo)準(zhǔn)輸入中所有行的歸并到一行一次性傳給命令執(zhí)行。

[b3335@MIC test]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo 
echo 01234 56789 
01234 56789
echo 01234 
01234

(6)將文件內(nèi)容以空格分隔同行輸出。

//列出文件內(nèi)容
cat test.txt
a b c d e
f g h i j 
k l m n o

//多行輸入單行輸出: 
cat test.txt | xargs
a b c d e f g h i j k l m n o

(7)與ps、grep、awk和kill結(jié)合,強(qiáng)制終止指定進(jìn)程

ps -ef|grep spp|awk '{printf "%s ",$2}'|xargs kill -9

命令解釋:
ps -ef|grep spp用于查找包含spp的進(jìn)程,awk '{printf "%s ",$2,FNR}將目標(biāo)進(jìn)程ID打印輸出,xargs kill -9則將目標(biāo)進(jìn)程ID作為參數(shù)傳遞給kill -9用于殺死進(jìn)程。

以上就是Linux xargs命令的使用的詳細(xì)內(nèi)容,更多關(guān)于Linux xargs命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

標(biāo)簽:衡水 南寧 畢節(jié) 云南 安陽 巴中 佛山 晉中

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux xargs命令的使用》,本文關(guān)鍵詞  Linux,xargs,命令,的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux xargs命令的使用》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux xargs命令的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    克拉玛依市| 琼结县| 任丘市| 娄底市| 崇州市| 昔阳县| 专栏| 汽车| 岚皋县| 黔江区| 山东省| 康平县| 五台县| 台前县| 蓬安县| 大渡口区| 勃利县| 福贡县| 饶平县| 汤阴县| 贞丰县| 泾源县| 邢台市| 晋州市| 云梦县| 宜宾县| 赤峰市| 孝昌县| 濮阳县| 汉中市| 定结县| 温州市| 全椒县| 陵川县| 锡林浩特市| 沧州市| 通榆县| 宝应县| 鲜城| 连城县| 永年县|