在linux中並不是所有的命令都可以處理資料流,因此有的時候我們想將普通的命令當作管線命令來使用,那麼久可以使用xargs這個命令了,這個命令主要的用途是將|前的命令輸出的資料流轉換成引數,然後給與後面的命令使用。
下面以id命令來嘗試,id命令可以輸出某個賬號的的uid,gid跟groups,但是這個命令每次只能處理1個賬號,那麼現在需求是1次性輸出/etc/passwd檔案下的前3個賬號的資訊
xargs的使用,引數與選項
[root@malt ~]$ xargs [-0epn] command
選項與引數:
-0 :如果輸入的 stdin 含有特殊字元,例如 `, , 空格鍵等等字元時,這個 -0 引數
可以將他還原成一般字元。這個引數可以用於特殊狀態喔!
-e :這個是 eof (end of file) 的意思。後面可以接乙個字串,當 xargs 分析到這個字串時,
就會停止繼續工作!
-p :在執行每個指令的 argument 時,都會詢問使用者的意思;
-n :後面接次數,每次 command 指令執行時,要使用幾個引數的意思。
當 xargs 後面沒有接任何的指令時,預設是以 echo 來進行輸出喔!
首先我們先用head命令獲取下/etc/passwd的前三個賬號
[root@malt ~]# head -n 3 /etc/passwd
root:x:0
:0:root
:/root
:/bin/bash
bin:x:1
:1:bin
:/bin
:/sbin/nologin
daemon:x:2
:2:daemon
:/sbin
:/sbin/nologin
分別有root,bin,daemon三個賬號,然後我們現在只需要獲取到root,bin跟daemon這三個字串即可,然後那我們就需要用到管線命令cut了
[root@malt ~]# head -n 3 /etc/passwd | cut -d ':' -f 1
root
bindaemon
如此就可以獲取到3個賬號名字了,然後再通過xargs來將這3個賬號作為引數1次1個來傳送到id命令中。
[root@malt ~]# head -n 3 /etc/passwd | cut -d ':' -f 1 | xargs -n 1 id
uid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)
uid=2(daemon) gid=2(daemon) groups=2(daemon)
這樣就滿足了我們上面的需求了 Linux xargs 用法詳解
1.簡介 之所以能用到這個命令,關鍵是由於很多命令不支援 管道來傳遞引數,而日常工作中有有這個必要,所以就有了xargs命令,例如 find sbin perm 700 ls l 這個命令是錯誤的 find sbin perm 700 xargs ls l 這樣才是正確的 xargs 可以讀入 st...
Linux xargs命令詳解
xargs用法詳解 1.簡介 之所以能用到這個命令,關鍵是由於很多命令不支援 管道來傳遞引數,而日常工作中有有這個必要,所以就有了xargs命令,例如 find sbin perm 700 ls l 這個命令是錯誤的 find sbin perm 700 xargs ls l 這樣才是正確的 xar...
linux xargs命令學習
xargs命令用來將前乙個程式的標準輸出作為後乙個程式的引數,通常xargs會結合管道以及其它命令一起使用,功能非常強大。以下給出幾種實際的使用案例 1.向指定的程序傳送signal,sh kill 0 2222 sh kill 2222 no such process sh echo 1sh sh...