0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux中xargs命令簡(jiǎn)介和選項(xiàng)說(shuō)明

Linux愛好者 ? 來(lái)源:csdn ? 作者:戀貓大鯉魚 ? 2021-03-11 16:47 ? 次閱讀

1.命令簡(jiǎn)介

xargs 可以將 stdin 中以空格或換行符進(jìn)行分隔的數(shù)據(jù),形成以空格分隔的參數(shù)(arguments),傳遞給其他命令。因?yàn)橐钥崭褡鳛榉指舴杂幸恍┪募蛘咂渌饬x的字符串內(nèi)含有空格的時(shí)候,xargs 可能會(huì)誤判。簡(jiǎn)單來(lái)說(shuō),xargs 的作用是給其他命令傳遞參數(shù),是構(gòu)建單行命令的重要組件之一。

之所以要用到 xargs,是因?yàn)楹芏嗝畈恢С质褂霉艿?| 來(lái)傳遞參數(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 [OPTIONS] [COMMAND]

3.選項(xiàng)說(shuō)明

注意,長(zhǎng)選項(xiàng)的強(qiáng)制性參數(shù)對(duì)于短選項(xiàng)也是強(qiáng)制的。

-0, --null

如果輸入的 stdin 含有特殊字符,例如反引號(hào) `、反斜杠 、空格等字符時(shí),xargs 將它還原成一般字符。為默認(rèn)選項(xiàng)

-a, --arg-file=FILE

從指定的文件 FILE 中讀取輸入內(nèi)容而不是從標(biāo)準(zhǔn)輸入

-d, --delimiter=DEL

指定 xargs 處理輸入內(nèi)容時(shí)的分隔符。xargs 處理輸入內(nèi)容默認(rèn)是按空格和換行符作為分隔符,輸出 arguments 時(shí)按空格分隔

-E EOF_STR

EOF_STR 是 end of file string,表示輸入的結(jié)束

-e, --eof[=EOF_STR]

作用等同于 -E 選項(xiàng),與 -E 選項(xiàng)不同時(shí),該選項(xiàng)不符合 POSIX 標(biāo)準(zhǔn)且 EOF_STR 不是強(qiáng)制的。如果沒有 EOF_STR 則表示輸入沒有結(jié)束符

-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ù)位置。例如備份以 txt 為后綴的文件:find 。 -name “*.txt” | xargs -I {} cp {} /tmp/{}.bak

-i, --replace[=REPLACE_STR]

作用同 -I 選項(xiàng),參數(shù) REPLACE_STR 是可選的,缺省為 {}。建議使用 -I 選項(xiàng),因?yàn)槠浞?POSIX

-L MAX_LINES

限定最大輸入行數(shù)。隱含了 -x 選項(xiàng)

-l, --max-lines[=MAX_LINES]

作用同 -L 選項(xiàng),參數(shù) MAX_LINES 是可選的,缺省為 1。建議使用 -L 選項(xiàng),因?yàn)槠浞?POSIX 標(biāo)準(zhǔn)

-n, --max-args=MAX_ARGS

表示命令在執(zhí)行的時(shí)候一次使用參數(shù)的最大個(gè)數(shù)

-o, --open-tty

在執(zhí)行命令之前,在子進(jìn)程中重新打開stdin作為/dev/TTY。如果您希望xargs運(yùn)行交互式應(yīng)用程序,這是非常有用的

-P, --max-procs=MAX_PROCS

每次運(yùn)行最大進(jìn)程;缺省值為 1。如果 MAX_PROCS 為 0,xargs 將一次運(yùn)行盡可能多的進(jìn)程。一般和 -n 或 -L 選項(xiàng)一起使用

-p, --interactive

當(dāng)每次執(zhí)行一個(gè) argument 的時(shí)候詢問(wèn)一次用戶

--process-slot-var=NAME

將指定的環(huán)境變量設(shè)置為每個(gè)正在運(yùn)行的子進(jìn)程中的唯一值。一旦子進(jìn)程退出,將重用該值。例如,這可以用于初始負(fù)荷分配方案

-r, --no-run-if-empty

當(dāng) xargs 的輸入為空的時(shí)候則停止 xargs,不用再去執(zhí)行后面的命令了。為默認(rèn)選項(xiàng)

-s, --max-chars=MAX_CHARS

命令行的最大字符數(shù),指的是 xargs 后面那個(gè)命令的最大命令行字符數(shù),包括命令、空格和換行符。每個(gè)參數(shù)單獨(dú)傳入 xargs 后面的命令

--show-limits

顯示操作系統(tǒng)對(duì)命令行長(zhǎng)度的限制

-t, --verbose

先打印命令到標(biāo)準(zhǔn)錯(cuò)誤輸出,然后再執(zhí)行

-x, --exit

配合 -s 使用,當(dāng)命令行字符數(shù)大于 -s 指定的數(shù)值時(shí),退出 xargs

--help

顯示幫助信息并退出

--version

顯示版本信息并退出

4.常用示例

(1)將 Shell 的特殊字符反引號(hào)還原為一般字符。

echo ‘`0123`4 56789’ | xargs -t echo

echo `0123`4 56789

`0123`4 56789

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

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ú)的字段,即以空格或者換行符分隔的字段。

echo 01234 , 56789 | xargs -E “,”

01234

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

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

# 選擇符合條件的文件

ls | grep -E “201701|201702|201703” | xargs -I {} mv {} {}.bak

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

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í)行。

echo -e “01234

56789

01234” | 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,F(xiàn)NR}將目標(biāo)進(jìn)程 ID 打印輸出,xargs kill -9則將目標(biāo)進(jìn)程 ID 作為參數(shù)傳遞給kill -9用于殺死進(jìn)程。

原文標(biāo)題:每天一個(gè) Linux 命令(134):xargs 命令

文章出處:【微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207910

原文標(biāo)題:每天一個(gè) Linux 命令(134):xargs 命令

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux基本命令總結(jié)

    都說(shuō)Linux命令多,實(shí)際工作我們又有多少命令會(huì)接觸用到呢?本文跟大家分享Linux運(yùn)維工作中常用的600個(gè)
    的頭像 發(fā)表于 01-11 10:32 ?873次閱讀

    linux的正常關(guān)機(jī)命令可以是

    Linux系統(tǒng),常用的正常關(guān)機(jī)命令有三個(gè):shutdown、poweroff和halt。下面是對(duì)這三個(gè)命令的詳細(xì)解釋: shutdown命令
    的頭像 發(fā)表于 11-26 15:35 ?901次閱讀

    linux關(guān)機(jī)的三個(gè)命令

    Linux系統(tǒng),常用的關(guān)機(jī)命令有三個(gè):shutdown、poweroff和halt。下面是對(duì)這三個(gè)命令的詳細(xì)解釋: shutdown命令
    的頭像 發(fā)表于 11-26 15:33 ?1913次閱讀

    linux的正常關(guān)機(jī)命令可以是什么

    正常關(guān)機(jī)是指在Linux系統(tǒng)下安全地關(guān)閉計(jì)算機(jī)或服務(wù)器,以防止數(shù)據(jù)丟失或損壞。通常,在執(zhí)行關(guān)機(jī)命令之前,用戶需要先保存所有的工作并確保系統(tǒng)處于一個(gè)穩(wěn)定的狀態(tài)。以下是Linux系統(tǒng)中常用的幾個(gè)正常關(guān)機(jī)
    的頭像 發(fā)表于 11-17 11:18 ?1036次閱讀

    linux關(guān)機(jī)命令有哪些

    Linux系統(tǒng)中用于關(guān)機(jī)的命令有多種,包括shutdown、poweroff、halt、reboot等等。下面將詳細(xì)介紹這些命令的用法和參數(shù)。 shutdown命令: shutdown
    的頭像 發(fā)表于 11-17 11:15 ?1403次閱讀

    top命令如何進(jìn)入選項(xiàng)

    top命令是一個(gè)常用的Linux系統(tǒng)性能監(jiān)控工具,可以實(shí)時(shí)地監(jiān)視系統(tǒng)的整體運(yùn)行情況。通過(guò)使用top命令,我們可以查看系統(tǒng)的負(fù)載情況、進(jìn)程的CPU和內(nèi)存使用情況等。想要進(jìn)入top命令
    的頭像 發(fā)表于 11-17 10:27 ?1104次閱讀

    linuxtop命令詳解

    Linux系統(tǒng)的top命令是一個(gè)非常強(qiáng)大和常用的命令,用于實(shí)時(shí)監(jiān)控和管理系統(tǒng)的運(yùn)行狀態(tài)。它能夠顯示系統(tǒng)的整體性能數(shù)據(jù),以及各個(gè)進(jìn)程的資源占用情況。在本文中,我們將詳細(xì)解釋top
    的頭像 發(fā)表于 11-17 10:25 ?1782次閱讀

    linux重啟命令有哪些

    Linux是一種自由和開放源代碼的操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器和嵌入式設(shè)備。在Linux,有多種命令用于重啟系統(tǒng)。在本文中,我們將詳細(xì)介紹常用的L
    的頭像 發(fā)表于 11-17 09:49 ?1827次閱讀

    linux刪除文件命令rm

    Linux系統(tǒng),可以使用rm命令來(lái)刪除文件或目錄。該命令的功能是刪除一個(gè)目錄的一個(gè)或多個(gè)文件或目錄,也可以將某個(gè)目錄及其下的所有文件及
    的頭像 發(fā)表于 11-13 16:42 ?694次閱讀

    linuxsource命令的用法

    Linux,source命令通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。source命令可以用于讀取并執(zhí)行腳本文件
    的頭像 發(fā)表于 11-08 14:35 ?1731次閱讀

    linux查找文件的命令

    Linux,可以使用以下命令來(lái)查找文件: find 命令:可以在指定目錄及其子目錄查找文件,支持根據(jù)文件名、文件類型、文件大小、文件修
    的頭像 發(fā)表于 11-08 14:24 ?1057次閱讀

    linuxmore命令的用法

    Linux, more 命令是一個(gè)基本的分頁(yè)器,它一次顯示一屏文本內(nèi)容,按空格鍵向下滾動(dòng)一屏,按 q 鍵退出。 more 命令的基本語(yǔ)法如下: more [options] [fi
    的頭像 發(fā)表于 11-08 14:19 ?842次閱讀

    linux刪除文件的命令

    Linux,可以使用 rm 命令來(lái)刪除文件。該命令有多個(gè)參數(shù)和選項(xiàng)可供使用,以根據(jù)不同的情況進(jìn)行文件刪除操作。例如: rm
    的頭像 發(fā)表于 11-08 14:11 ?596次閱讀

    linux創(chuàng)建group的命令

    Linux,創(chuàng)建用戶組的命令是 groupadd 。 以下是一個(gè)例子: groupadd groupName 這個(gè)命令將創(chuàng)建一個(gè)新的用戶組,名稱為groupName。 在創(chuàng)建用戶組
    的頭像 發(fā)表于 11-08 11:35 ?1171次閱讀

    shell命令linux命令一樣嗎

    結(jié)合在一起,形成一個(gè)相當(dāng)于面向過(guò)程的程序,即shell script,從而實(shí)現(xiàn)一些復(fù)雜的功能。 而Linux命令則是用來(lái)對(duì)Linux系統(tǒng)進(jìn)行管理的命令。這些
    的頭像 發(fā)表于 11-08 10:51 ?2439次閱讀