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,如需转载请自行联系原作者
相关文章
|
算法 安全 Java
z3-solver求解器
一个非常高级的工具,SMT求解器。应用领域非常广,解各类方程,解各类编程问题(例如解数独),解逻辑题等都不在话下。
|
10月前
|
数据采集 人工智能 API
Qwen2.5-Coder深夜开源炸场,Prompt编程的时代来了!
通义千问团队开源「强大」、「多样」、「实用」的 Qwen2.5-Coder 全系列,致力于持续推动 Open Code LLMs 的发展。
|
10月前
|
数据采集 小程序 API
通义千问Qwen2.5-Coder 全系列来咯!强大、多样、实用
千问团队开源了强大的 Qwen2.5-Coder 系列模型,涵盖 0.5B 到 32B 六种尺寸,旨在推动开放代码模型的发展。该系列模型在代码生成、修复和推理等方面表现出色,支持多种编程语言,并在多个基准测试中达到 SOTA 水平。此外,Qwen2.5-Coder 还提供了丰富的应用场景,如代码助手、Artifacts 和 Interpreter,满足不同开发者的需求。
3597 106
|
11月前
|
编解码 移动开发 HTML5
简要描述多媒体的格式都有哪些
【10月更文挑战第5天】简要描述多媒体的格式都有哪些。
179 3
|
11月前
|
数据安全/隐私保护
(只需五步)注册谷歌账号详细步骤,解决“此电话号码无法验证”问题
注册google一直不方便,因为如果直接去google官网注册,那么它大概率会显示“此电话号码无法用于进行验证”接下来,按着教程来一步步做,就可以实现跳过此限制,成功用手机号注册google了。很简单的。
13590 1
|
IDE 开发工具 Python
python语法中括号不匹配处理
【7月更文挑战第8天】
494 2
|
小程序 API 调度
消费级显卡,17G显存,玩转图像生成模型FLUX.1!
近期stable diffusion的部分核心开发同学,推出了全新的图像生成模型FLUX.1。
|
安全 Linux 区块链
教你吃透以太坊的测试网络
主网络中的以太币是有价值的,在主网络上直接进行钱包软件或者智能合约的开发将会是非常危险的,稍有不慎就会损失以太币,甚至影响整个主网络的运行。同时,因为主网络使用人数多,矿工更是不计其数,如果是在开发一个wakuang软件,用一台开发软件的笔记本电脑几乎不可能挖出一个区块,这就导致测试几乎不可行。 于是,出于测试和学习的目的,便会有一小部分节点,使用与主网络不同的创世区块,开启一条全新的区块链,并在上面wakuang和测试,这就是测试网络(Testnet)。.........
935 0
教你吃透以太坊的测试网络
|
XML SQL 前端开发
0day审计之某微代码审计
0day审计之某微代码审计
1346 0
0day审计之某微代码审计
Linux terminal 终端快捷键
Linux terminal 终端快捷键