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命令

CHANBAEK ? 來源:myfreax ? 作者:myfreax ? 2022-12-02 17:42 ? 次閱讀

xargs命令允許您從標(biāo)準(zhǔn)輸入或者文件生成命令的參數(shù)并命令。通常xargs命令通過管道與其他命令組合使用。

xargs還允許您將另一個(gè)命令的標(biāo)準(zhǔn)輸出作為另一個(gè)命令的參數(shù)。例如mkdirrm命令。如果未提供命令,默認(rèn)是/bin/echo命令。

在本教程中,我們將向你介紹如何使用xargs命令的基礎(chǔ)知識(shí)。xargs命令默認(rèn)使用空白符對(duì)標(biāo)準(zhǔn)輸入字符串作為分隔符。

你可以使用xargs命令的-d/--delimiter選項(xiàng)設(shè)置自定義分隔符,分隔符可以是單個(gè)字符,也可以是以開頭的轉(zhuǎn)義序列。

Xargs 命令

xargs命令的語法形式是xargs [OPTIONS] [COMMAND [initial-arguments]]。

echo "file1 file2 file3" | xargs touch命令將會(huì)創(chuàng)建三個(gè)文件。等同于touch命令的touch file1 file2 file3。

如果參數(shù)太多,或者嘗試調(diào)試xrags命令的運(yùn)行結(jié)果。你可使用xrags命令的-t/--verbose選項(xiàng)測(cè)試xrags命令運(yùn)行結(jié)果。

echo "file1 file2 file3" | xargs -t touch命令將會(huì)打印要運(yùn)行的命令touch file1 file2 file3。

echo "file1 file2 file3" | xargs touch
echo  "file1 file2 file3" | xargs -t touch #for test

你也可以使用xrags命令的-p/--interactive選項(xiàng)達(dá)到同樣效果,-p選項(xiàng)也會(huì)打印將要運(yùn)行的命令。

-p選項(xiàng)會(huì)提示你是否運(yùn)行命令。輸入y/nY/N確認(rèn)是否運(yùn)行命令。-p選項(xiàng)還有一點(diǎn)就是在編寫腳本會(huì)非常有用。

echo  "file1 file2 file3" | xargs -p touch
touch file1 file2 file3 ?...

xargs 命令參數(shù)

默認(rèn)情況下,傳遞給命令的參數(shù)數(shù)量由系統(tǒng)限制決定。如果傳遞的參數(shù)太長命令將提示cannot execute [Argument list too long]。

xargs命令允許你使用-n/--max-args選項(xiàng)指定運(yùn)行一次命令要傳遞的參數(shù)數(shù)量。xargs將使用參數(shù)運(yùn)行多次指定的命令,直到用完所有參數(shù)為止。

例如命令echo "file1 file2 file3" | xargs -n 1 -t touch從標(biāo)準(zhǔn)輸入讀取的參數(shù)數(shù)量限制為1。

也就是一個(gè)參數(shù)運(yùn)行一次touch命令。相當(dāng)運(yùn)行以file1 file2 file3作為參數(shù)運(yùn)行3次touch命令。

這里限制傳遞參數(shù)為1僅作為示例,當(dāng)然你也可以指定任意的正整數(shù),但別超出系統(tǒng)的限制。

echo  "file1 file2 file3" |  xargs -n 1 -t touch
#eq
touch file1
touch file2
touch file3

xargs 命令讀取文件參數(shù)

xargs命令還可以從文件而不是標(biāo)準(zhǔn)輸入中讀取參數(shù)。如果你需要從文件讀取參數(shù),請(qǐng)使用xargs命令-a/--arg-file選項(xiàng),后跟文件名。

假設(shè)你有ips.txt文件包含多個(gè)IP地址并且一行包含一個(gè)IP地址。如果你沒有ips.txt文件請(qǐng)運(yùn)行echo命令echo "8.8.8.8 8.8.4.4" > ips.txt創(chuàng)建文件。

然后運(yùn)行命令xargs -t -L 1 -a ips.txt ping -c 1。這里還使用-L選項(xiàng)指示xargs一次讀取一行的參數(shù)。

如果省略此選項(xiàng),xargs命令將會(huì)讀取所有IP一次傳遞給ping命令運(yùn)行。

echo "8.8.8.8
8.8.4.4" > ips.txt
xargs -t -L 1 -a ips.txt ping -c 1

xargs 刪除空白字符

xargs也可以用于從指定字符串的兩端刪除空格或者空白的字符。這通常用于在shell腳本中比較字符串。

要?jiǎng)h除字符串兩端的空白字符串,只需將字符串通過管道傳遞給xargs命令,這相當(dāng)與其它編程語言的trim函數(shù),

echo " Long line " | xargs命令將會(huì)刪除字符串" Long line "的空白字符串。

echo "  Long line " | xargs

運(yùn)行多個(gè)Xargs命令

要多個(gè)Xargs命令,請(qǐng)使用-I選項(xiàng)。它通過一個(gè)定義 replace-str來工作,然后-I 選項(xiàng)替換這些預(yù)定義的字符,并傳遞傳遞給xargs命令。

例如命令echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'將會(huì)運(yùn)行兩個(gè)命令,首先將使用touch命令創(chuàng)建文件,然后將使用ls命令列出文件。

這其實(shí)不是xrags去運(yùn)行多個(gè)命令,xargs命令只是啟動(dòng)shell子進(jìn)程,運(yùn)行命令'{ touch %; ls -l %; }'

百分號(hào)%是一個(gè)占位符,這是常見的使用方式。您可以使用任意符號(hào)作為占位符。另一個(gè)常見的選擇是ARGS作為占位符。

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

xargs find

xargs命令也常用于與find命令組合使用。例如使用find命令搜索指定文件,然后用xargs命令對(duì)搜索結(jié)果執(zhí)行操作。

由于xargs命令默認(rèn)使用空白符對(duì)標(biāo)準(zhǔn)輸入字符串作為分隔符,為了避免文件名包含換行符或其它空白。請(qǐng)始終使用find命令的-print0選項(xiàng)。

-print0選項(xiàng)使find命令的搜索結(jié)果將不再使用換行符進(jìn)行分隔。此時(shí)你就可以使用xargs命令使用-0/--null選項(xiàng)來解釋此標(biāo)準(zhǔn)輸入。

例如命令find /var/www/.cache -type f -print0 | xargs -0 rm -f將會(huì)刪除/var/www/.cache目錄的所有文件。

find /var/www/.cache -type f -print0 | xargs -0 rm -f

結(jié)論

至此,您應(yīng)該對(duì)如何使用Linux xargs命令有一個(gè)很好的了解。每個(gè)xargs選項(xiàng)的更多詳細(xì)信息,請(qǐng)閱讀xargs手冊(cè)頁。

如有任何疑問,請(qǐng)隨時(shí)發(fā)表評(píng)論。如果排版存在錯(cuò)亂,點(diǎn)擊下方閱讀原文獲取更好排版格式。

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

    關(guān)注

    87

    文章

    11177

    瀏覽量

    208489
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1733

    瀏覽量

    31985
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    669

    瀏覽量

    21956
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linuxxargs命令的使用方法

    xargs命令從標(biāo)準(zhǔn)輸入或另一個(gè)命令的輸出中讀取文本行,并將其轉(zhuǎn)換為命令并執(zhí)行。
    發(fā)表于 11-25 15:14 ?6926次閱讀
    <b class='flag-5'>Linux</b>中<b class='flag-5'>xargs</b><b class='flag-5'>命令</b>的使用方法

    linux運(yùn)維命令大全

    Linux高端運(yùn)維學(xué)習(xí)需要掌握大量的命令及相關(guān)工具,通讀bash man page、掌握VIM使用、了解SSH是Linux高端運(yùn)維工程師必備功課,熟練掌握Linux高端運(yùn)維實(shí)用
    發(fā)表于 03-15 16:36

    [轉(zhuǎn)]find命令結(jié)合exec和xargs使用的區(qū)別

    本文轉(zhuǎn)自:老男孩教育官網(wǎng)轉(zhuǎn)載請(qǐng)注明出處:https://www.oldboyedu.com/zuixin_wenzhang/index/id/269.htmlfind命令結(jié)合exec和xargs
    發(fā)表于 09-03 15:26

    Linux與用戶有關(guān)的命令

    Linux與用戶有關(guān)的命令 Linux與用戶有關(guān)的命令  passwd命令  出于系統(tǒng)安全考慮,Lin
    發(fā)表于 01-18 12:46 ?758次閱讀

    Linux的常用網(wǎng)絡(luò)命令

    Linux的常用網(wǎng)絡(luò)命令 Linux 的常用網(wǎng)絡(luò)命令  計(jì)算機(jī)網(wǎng)絡(luò)的主要優(yōu)點(diǎn)是能夠?qū)崿F(xiàn)資源和信息的共享,并且用戶可以遠(yuǎn)程訪問信息。Linux
    發(fā)表于 01-18 12:47 ?1167次閱讀

    Linux關(guān)機(jī)命令詳解

    Linux關(guān)機(jī)命令詳解 在linux下一些常用的關(guān)機(jī)/重啟命令有shutdown、halt、reboot、及init,它們都 可以達(dá)到重啟系統(tǒng)的目的,但每個(gè)
    發(fā)表于 01-18 12:52 ?3605次閱讀

    Linux系統(tǒng)命令指南

    在“Linux 文件命令精通指南”中,我們討論了利用最基礎(chǔ)和最常用 Linux 文件命令所需的基本信息。在本文中,我將對(duì) Linux 系統(tǒng)
    發(fā)表于 05-23 10:23 ?938次閱讀

    Linux文件查找命令find,xargs詳述

    Linux文件查找命令find,xargs詳述 前言:關(guān)于find命令 由于find具有強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時(shí)間來了解一下。即使系統(tǒng)中含有網(wǎng)絡(luò)文件
    發(fā)表于 11-07 11:17 ?0次下載

    linux常用命令大匯總

    ,還要查閱一些資料,實(shí)際操作實(shí)驗(yàn),進(jìn)行過程比較慢,由于Linux水平不怎么樣,翻譯、整理過程中難免存在不足或錯(cuò)誤,懇請(qǐng)大家批評(píng)指正。 xargs 或者 parallel,從標(biāo)準(zhǔn)輸入中讀取信息作為參數(shù),初始化可執(zhí)行命令,然后一次或
    發(fā)表于 09-22 00:12 ?403次閱讀

    linux有哪些常用的命令

     Linux命令非常之多,分為內(nèi)部命令和外部命令。
    發(fā)表于 02-27 08:00 ?4次下載
    <b class='flag-5'>linux</b>有哪些常用的<b class='flag-5'>命令</b>

    Linuxxargs命令簡介和選項(xiàng)說明

    1.命令簡介 xargs 可以將 stdin 中以空格或換行符進(jìn)行分隔的數(shù)據(jù),形成以空格分隔的參數(shù)(arguments),傳遞給其他命令。因?yàn)橐钥崭褡鳛榉指舴杂幸恍┪募蛘咂渌饬x的字符串
    的頭像 發(fā)表于 03-11 16:47 ?3116次閱讀

    常用Linux命令介紹

    linux命令是對(duì)Linux系統(tǒng)進(jìn)行管理的命令。對(duì)于Linux系統(tǒng)來說,無論是中央處理器、內(nèi)存、磁盤驅(qū)動(dòng)器、鍵盤、鼠標(biāo),還是用戶等都是文件,
    的頭像 發(fā)表于 02-09 14:31 ?1006次閱讀

    淺析Linux精致的命令

    這只是一小部分常用的Linux命令Linux有很多命令可以使用。建議通過man命令來查看命令
    的頭像 發(fā)表于 04-24 16:28 ?1490次閱讀

    shell命令linux命令一樣嗎

    Shell命令Linux命令并不完全一樣。 首先,Shell是一種命令行解釋器,它是用來解釋和執(zhí)行用戶輸入的命令的。Shell既是一種
    的頭像 發(fā)表于 11-08 10:51 ?2599次閱讀

    linux重啟命令有哪些

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