Linux xargs引數代換命令

2021-07-31 04:59:52 字數 1420 閱讀 2166

在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...