xargs命令来自英文词组extended arguments的缩写,用作给其他命令传递参数的过滤器。xargs命令能够处理从标准输入或管道符输入的数据,并将其转换成命令参数,也可以将单行或多行输入的文本转换成其他格式。

xargs命令默认接收的信息中,空格是默认定界符,所以可以接收包含换行和空白的内容。

语法格式:xargs 参数 文件名

常用参数:

-a设置从文件中读取数据 -r如果输入数据为空,则不执行
-d设置自定义定界符-s设置每条命令最大字符数
-I设置替换字符串-t显示xargs执行的命令
-n设置多行输出--help显示帮助信息
-p执行命令前询问用户是否确认--version显示版本信息

参考示例

默认以空格为定界符,以多行形式输出文件内容,每行显示3段内容值:

[root@linuxcool ~]# cat File.cfg | xargs -n 3 
#version=RHEL8 ignoredisk --only-use=sda 
autopart --type=lvm # 
Partition clearing information 
clearpart --all --initlabel 
--drives=sda # Use 
graphical install graphical
 ………………省略部分输出信息………………

指定字符X为定界符,默认以单行的形式输出字符串内容:

[root@linuxcool ~]# echo "FirstXSecondXThirdXFourthXFifth" | xargs -dX
First Second Third Fourth Fifth

指定字符X为定界符,以多行形式输出文本内容,每行显示两段内容值:

[root@linuxcool ~]# echo "FirstXSecondXThirdXFourthXFifth" | xargs -dX -n 2 
First Second 
Third Fourth 
Fifth

设定每一次输出信息时,都需要用户手动确认后再显示到终端界面:

[root@linuxcool ~]# echo "FirstXSecondXThirdXFourthXFifth" | xargs -dX -n 2 -p 
echo First Second ?...y 
First Second 
echo Third Fourth ?...y 
Third Fourth 
echo Fifth 
 ?...y 
Fifth

由xargs调用要执行的命令,并将结果输出到终端界面:

[root@linuxcool ~]# ls | xargs -t -I{} echo {} 
echo anaconda-ks.cfg 
anaconda-ks.cfg 
echo Desktop 
Desktop 
echo Documents 
Documents
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。