1. 程式人生 > >Linux命令(1)——xargs命令

Linux命令(1)——xargs命令

1.功能:

xargs可以將stdin中以空格或換行符進行分隔的資料,形成以空格分隔的引數(arguments),傳遞給其他命令。因為以空格作為分隔符,所以有一些檔名或者其他意義的名詞內含有空格的時候,xargs可能會誤判。簡單來說,xargs是給其他命令傳遞引數的一個過濾器,是構建單行命令的重要元件之一。

之所以要用到xargs,是因為由於很多命令不支援使用管道|來傳遞引數,例如:

find /sbin -perm +700 |ls -l         //這個命令是錯誤,因為標準輸入不能作為ls的引數
find /sbin -perm +700 |xargs ls -l   //這樣才是正確的

2.命令格式

xargs [選項] [command]

3.選項說明:

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

4.用法示例

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

[[email protected] ~]$ echo '`0123`4 56789'|xargs -t echo
echo `0123`4 56789 
`0123`4 56789

如果直接進行如下操作,會報無法找到命令01234的錯誤,因為反引號在shell中會將01234作為一個命令來執行,但是01234不是一個命令。-t表示先列印命令,然後再執行。

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

(2)設定xargs讀入引數時的結束標識,以逗號結束。這裡要注意結束標誌必須要是單獨的欄位,即以空格或者換行符分隔的欄位。

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

(3)使用rm、mv等命令同時操作多個檔案時,有時會報”argument list too long”引數列表過長的錯誤,此時可以使用xargs來解決。xargs將標準輸入的字串分隔後,單獨作為引數傳遞給後面的命令。例如,將當前目錄的所有檔案新增字尾名。

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

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

(4)設定命令列的最大字元數。引數預設一個一個單獨傳入命令中執行。

[[email protected] test]$ echo "01234 56789"|xargs -t -s 11
echo 01234 
01234
echo 56789 
56789

(5)設定標準輸入中每次多少行作為命令的引數,預設是將標準輸入中所有行的歸併到一行一次性傳給命令執行。

[[email protected] test]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo  
echo 01234 56789 
01234 56789
echo 01234 
01234

(6)將檔案內容以空格分隔同行輸出。

//列出檔案內容
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結合,強制終止指定程序

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

命令解釋:
ps -ef|grep spp用於查詢包含spp的程序,awk '{printf "%s ",$2,FNR}將目標程序ID列印輸出,xargs kill -9則將目標程序ID作為引數傳遞給kill -9用於殺死程序。

參考文獻

相關推薦

Linux命令1——xargs命令

1.功能: xargs可以將stdin中以空格或換行符進行分隔的資料,形成以空格分隔的引數(arguments),傳遞給其他命令。因為以空格作為分隔符,所以有一些檔名或者其他意義的名詞內含有空格的時候,xargs可能會誤判。簡單來說,xargs是給其他命令傳遞

命令1====md5sum命令

md5sum1、簡介MD5算法一般用於檢查文件完整性,尤其常用於檢測在(網絡)文件傳輸、拷貝、磁盤錯誤或其他無惡意涉入的情況下文件的正確性。MD5 全稱報文摘要算法(Message-DigestAlgorithm 5)[RFC 1321],該算法對任意長度的信息進行逐位計算,產生一個二進制長度128位(十六進

linux 基礎命令1

linux安裝完系統,接下來就可以動手操練一下了首先,我們最應該關心的應該是設備的硬件信息,比如cpu、內存、分區、網卡查看cpu信息命令: lscpu類似的查看cpu信息命令還有:cat /proc/cpuinfo查看內存信息命令: free -h-h是以人類易讀的方式顯示,說白了就是有容量單位其中-/+

每天一個linux命令1:scp 命令

filename use des 本地文件 lin oca www tro 服務器 scp命令主要用於兩個服務器之間文件的傳輸。 1、從服務器下載文件 scp [email protected]:/path/filename /tmp/local_destin

Linux基本命令1

基本命令 重定向一、箭頭的指向就是數據流的流向,數字說明:0表示標準輸入,1表示標準正確輸出,2表示標準錯誤輸出。2&1>或者2&1>>表示標準正確輸出和標準錯誤輸出一樣。如:cho ‘i am studying’2&1>>/data/boy1、

Linux學習並不難》Linux常用操作命令1: cat命令顯示文本文件內容

Linux cat 8.1 《Linux學習並不難》Linux常用操作命令(1): cat命令顯示文本文件內容使用cat命令可以顯示文本文件的內容,也可以把幾個文件內容附加到另一個文件中。如果沒有指定文件,或者文件為“-”,那麽就從標準輸入讀取。命令語法:cat [選項] [文件]命令中各選項的含義

Linux常用命令1

Linux 常用命令 系統信息 arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬件系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁盤的架構特性 hd

每天一個不熟悉的linux命令1

linux 基礎命令 這個命令是幹什麽的? 一句話概括,用chgrp變更文件與目錄的屬組。chgrp是change group的縮寫。被改變的組名必須在/etc/group文件裏才行,也就是說,這個組名必須已存在。 1.命令格式:chgrp [參數] [組] [文件] 2.使用權限:使用權限是超級用戶

七月八號linux學習筆記-常見的linux命令1

sre 之間 free命令 進程pid windows 監視 red linux學習 網絡文件 一,查看幫助命令1.#man man查看man自身的幫助信息二,常見的系統工作命令1.echo命令 用於在終端輸出字符串或變量提取後的值格式為"echo[字符串|$變量

Linux命令1

cd <directory>   Short for "change directory".   The shorthand name for the current directory is  .   The shorthand name for the parent direc

標號2:python(就業階段)——Linux系統命令1——《高階Linux命令命令選項的使用》

一、高階Linux命令及命令選項的使用 <1>重定向命令:> Linux允許將命令執行結果重定向到一個檔案,本應顯示在終端上的內容儲存到指定檔案中。 1、ls >> test.txt 輸出重定向則會追加到檔案的尾部。 2、ls > test.t

linux基礎命令1

檔案系統 檔案和目錄被組織成一個單根倒置樹結構 檔案系統從根目錄下開始,用“/”表示  根檔案系統(rootfs):root filesystem  檔名稱區分大小寫  以.開頭的檔案為隱藏檔案 路徑分隔的 / 檔案有兩類資料: 元資料:metadata

linux的使用者管理命令1

#####linux系統結構######## linux是一個倒樹型結構,最大的目錄名稱叫“/” (根目錄) #####linux系統中的二級目錄###### /bin ##二進位制可執行檔案,系統常規命令 /boot ##啟動目錄,存放系統自動啟動檔案,核心,初始化程式

Linux 命令1 幫助命令之help

help命令 : help【-dms】 【模式...】 顯示內嵌命令的相關資訊。 顯示內嵌命令的簡略資訊。如果指定了PATTERN模式,給出所有匹配的PATTERN的命令的詳

一天一個linux命令1:top

First of all,其實應該關注的是不是命令本身,而是我們通過命令,可以達成什麼事?所以本系列部落格的風格這樣子安排:目的驅動 + 命令常用選項解釋,其它的東西完全可以自己xxx -h來獲得。但是我覺得,懂得自己能夠使用命令來做什麼事才是最重要的,不

uboot命令1:mmc命令

當前 .com 設備 十六進制 mci rgs 開發平臺 通過 硬件 版權聲明 更新:2017-06-07博主:LuckyAlan聯系:[email protected]/* */聲明:吃水不忘挖井人,轉載請註明出處! 1 文章介紹 今天在進行Android分區

Metasploit Framework1基本命令、簡單使用

文章的格式也許不是很好看,也沒有什麼合理的順序 完全是想到什麼寫一些什麼,但各個方面都涵蓋到了 能耐下心看的朋友歡迎一起學習,大牛和槓精們請繞道   基本的控制檯命令介紹: banner 檢視metasploit的基本資訊   connect 這裡理解成kali的nc命令

常用dos命令1

【 資料夾管理 】 cd 顯示當前目錄名或改變當前目錄。 md 建立目錄。 rd 刪除一個目錄。 dir 顯示目錄中的檔案和子目錄列表。 tree 以圖形顯示驅動器或路徑的資料夾結構。 path 為可執行檔案顯示或設定一個搜尋路徑。 xcopy 複製檔案和目錄樹。 cd 我們用CD命令來改變當前目錄

Linux命令48——stat命令

1.命令簡介 stat命令用於顯示檔案或檔案系統的詳細資訊。在顯示檔案資訊時,比ls命令更加詳細。 2.命令格式 stat [OPTION]... FILE.. 3.命令選項 -L, --dereference:跟隨符號連結解析原檔案而非符號連結; -f, --fi

Linux命令47——file命令

1.命令簡介 file命令用來識別檔案型別,對檔案的檢查分為檔案系統、魔法幻數檢查和語言檢查三個過程,也可用來辨別一些檔案的編碼格式。它是通過檢視檔案的頭部資訊來獲取檔案型別,而不是像Windows通過副檔名來確定檔案型別的。 2.命令格式 file [-bchiklLNnp