xargs参数代换

xargs 的作用是产生命令需要的参数,主要是用于在命令结合管道的使用中给一些不支持管道的命令提供输入参数。

例如:利用find找出~ 目录下由特殊权限的文件,并用ls命令列出文件列表:

1
2
3
4
5
6
7
8
[whx@localhost ~]$  find  ~ -perm +7000 |  ls -l
total 128
drwxr-xr-x. 2 whx whx 4096 Jul 19 09:44 Desktop
drwxr-xr-x. 2 whx whx 4096 Jul 19 09:44 Documents
drwxr-xr-x. 2 whx whx 4096 Jul 19 09:44 Downloads
-rwSrwSr-T. 1 whx whx 4057 Aug 24 19:21  man .config.b
-rw-rw-r--. 1 whx whx 4057 Aug 24 19:21  man .config.c

上面的命令虽然列出了文件列表,其中包含了具有特殊权限的文件,但是我们的本意是只列出具有特殊权限的文件列表,而不是该目录下的所有文件。导致这个结果不符合预期结果的原因是ls命令不支持管道。这种情况下可以是xargs来将管道符前面的输出转换为ls的输入参数。

 

1
2
[whx@localhost~]$  find  ~ -perm +7000 | xargs  ls  -l
-rwSrwSr-T. 1 whx whx 4057 Aug 24 19:21 /home/whx/man .config.b

 

利用xargs将管道符前命令的输出作为finger的输入参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
[whx@localhost ~]$  cut  -d  ':'  -f 1 /etc/passwd  head  -n 2 |  xargs  finger
Login: root                             Name: root
Directory:  /root                         Shell:  /bin/bash
Never logged  in .
New mail received Thu Aug 24 19:09 2017(PDT)
     Unread since Wed Jul 19 10:33 2017 (PDT)
No Plan.
  
Login: bin                              Name: bin
Directory:  /bin                          Shell:  /sbin/nologin
Never logged  in .
No mail.
No Plan.

添加 -p参数在执行xargs后的命令是输出提示信息询问用户是否执行该命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[whx@localhost ~]$  cut  -d  ':'  -f 1 /etc/passwd  head  -n 2 |  xargs  -p finger
finger root bin ?...y
Login: root                             Name: root
Directory:  /root                         Shell:  /bin/bash
Never logged  in .
New mail received Thu Aug 24 19:09 2017(PDT)
     Unread since Wed Jul 19 10:33 2017 (PDT)
No Plan.
  
Login: bin                              Name: bin
Directory:  /bin                          Shell:  /sbin/nologin
Never logged  in .
No mail.
No Plan.

 

添加-n 2参数表示finger命令每次执行时只有2个参数,即每次值输出2个用户的信息,finger命令每次执行之前会询问用户是否执行,每输出2个用户信息后敲击回车,会再次询问用户,知道输入参数中用户信息全部被finger命令输出为止。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[whx@localhost ~]$  cut  -d  ':'  -f 1 /etc/passwd  xargs  -p -n 2 finger           
finger root bin ?...y
finger daemon adm ?...Login: root                               Name: root
Directory:  /root                         Shell:  /bin/bash
Never logged  in .
New mail received Thu Aug 24 19:09 2017(PDT)
     Unread since Wed Jul 19 10:33 2017 (PDT)
No Plan.
  
Login: bin                              Name: bin
Directory:  /bin                          Shell:  /sbin/nologin
Never logged  in .
No mail.
No Plan.
  
finger lp  sync  ?...y
finger  shutdown  halt ?...Login: lp                              Name: lp
Directory:  /var/spool/lpd                Shell:  /sbin/nologin
Never logged  in .
No mail.
No Plan.
  
Login:  sync                              Name:  sync
Directory:  /sbin                         Shell:  /bin/sync
Never logged  in .
No mail.
No Plan.

 

添加-e参数设置遇到某个字符串时让xrags停止工作。

例如从上面的命令可以看出第二个用户名为bin,所以不添加-e’bin’ 参数时下面的命令会一次输出4个用户的信息,并且每次执行都会询问用户是否执行finger命令,但是设置-e’bin‘参数使得xargs遇到bin这个字符串时停止工作。所以这条命令只输出了第一个用户的信息就结束了。

1
2
3
4
5
6
7
8
[whx@localhost ~]$  cut  -d  ':'  -f 1 /etc/passwd  xargs  -p -e 'bin'  -n 4 finger
finger root ?...y
Login: root                             Name: root
Directory:  /root                         Shell:  /bin/bash
Never logged  in .
New mail received Thu Aug 24 19:09 2017(PDT)
     Unread since Wed Jul 19 10:33 2017 (PDT)
No Plan.



本文转自 天黑顺路 51CTO博客,原文链接:http://blog.51cto.com/mjal01/1959298,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值