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

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

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

如何使用Linux xargs命令

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

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

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

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

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

Xargs 命令

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

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

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

echo "file1 file2 file3" | xargs -t touch命令將會打印要運行的命令touch file1 file2 file3。

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

你也可以使用xrags命令的-p/--interactive選項達到同樣效果,-p選項也會打印將要運行的命令。

-p選項會提示你是否運行命令。輸入y/nY/N確認是否運行命令。-p選項還有一點就是在編寫腳本會非常有用。

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

xargs 命令參數(shù)

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

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

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

也就是一個參數(shù)運行一次touch命令。相當運行以file1 file2 file3作為參數(shù)運行3次touch命令。

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

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

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

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

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

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

如果省略此選項,xargs命令將會讀取所有IP一次傳遞給ping命令運行。

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

xargs 刪除空白字符

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

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

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

echo "  Long line " | xargs

運行多個Xargs命令

要多個Xargs命令,請使用-I選項。它通過一個定義 replace-str來工作,然后-I 選項替換這些預定義的字符,并傳遞傳遞給xargs命令。

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

這其實不是xrags去運行多個命令,xargs命令只是啟動shell子進程,運行命令'{ touch %; ls -l %; }'。

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

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

xargs find

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

由于xargs命令默認使用空白符對標準輸入字符串作為分隔符,為了避免文件名包含換行符或其它空白。請始終使用find命令的-print0選項。

-print0選項使find命令的搜索結(jié)果將不再使用換行符進行分隔。此時你就可以使用xargs命令使用-0/--null選項來解釋此標準輸入。

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

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

結(jié)論

至此,您應該對如何使用Linux xargs命令有一個很好的了解。每個xargs選項的更多詳細信息,請閱讀xargs手冊頁。

如有任何疑問,請隨時發(fā)表評論。如果排版存在錯亂,點擊下方閱讀原文獲取更好排版格式。

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

    關(guān)注

    87

    文章

    11212

    瀏覽量

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

    關(guān)注

    11

    文章

    1757

    瀏覽量

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

    關(guān)注

    5

    文章

    678

    瀏覽量

    21965
收藏 人收藏

    評論

    相關(guān)推薦

    Linuxxargs命令的使用方法

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

    linux運維命令大全

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

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

    本文轉(zhuǎn)自:老男孩教育官網(wǎng)轉(zhuǎn)載請注明出處: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 ?760次閱讀

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

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

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

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

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

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

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

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

    linux常用命令大匯總

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

    linux有哪些常用的命令

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

    Linuxxargs命令簡介和選項說明

    1.命令簡介 xargs 可以將 stdin 中以空格或換行符進行分隔的數(shù)據(jù),形成以空格分隔的參數(shù)(arguments),傳遞給其他命令。因為以空格作為分隔符,所以有一些文件名或者其他意義的字符串
    的頭像 發(fā)表于 03-11 16:47 ?3138次閱讀

    常用Linux命令介紹

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

    淺析Linux精致的命令

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

    shell命令linux命令一樣嗎

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

    linux重啟命令有哪些

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