每天一点Linux-15参数传递

  1. 参数传递 Xargs

参数传递 Xargs

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:这个命令是错误的find /sbin -perm +700 |ls -l 这样才是正确的find /sbin -perm +700 |xargs ls -l 。xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。

awk sed grep sort uniq less more xargs //支持管道命令
ls cp rm //不支持管道

案例1
[root@localhost ~]# touch /home/file{1..5}

[root@localhost ~]# vim files.txt
/home/file1
/home/file2
/home/file3
/home/file4
/home/file5

[root@localhost ~]# cat files.txt |ls -l //失败
[root@localhost ~]# cat files.txt |rm -rvf //失败
[root@localhost ~]# cat files.txt |xargs ls -l //成功
-rw-r–r–. 1 root root 0 Mar 11 10:35 /home/file1
-rw-r–r–. 1 root root 0 Mar 11 10:35 /home/file2
-rw-r–r–. 1 root root 0 Mar 11 10:35 /home/file4
-rw-r–r–. 1 root root 0 Mar 11 10:35 /home/file5

[yang@ecs-ea9d ~]$ cat files.txt |xargs sudo rm -rvf
removed ‘/home/file1’
removed ‘/home/file2’
removed ‘/home/file4’
removed ‘/home/file5’

案例2
[root@localhost ~]# touch /home/file{1..5}
[root@localhost ~]# cat files.txt |xargs -I {} ls -l {} //先将前面的内容保存到{}内,在后面进行读取,{}可自定义,也可以定义为Jack、Rose等
-rw-r–r–. 1 root root 0 Mar 11 10:40 /home/file1
-rw-r–r–. 1 root root 0 Mar 11 10:40 /home/file2
-rw-r–r–. 1 root root 0 Mar 11 10:40 /home/file4
-rw-r–r–. 1 root root 0 Mar 11 10:40 /home/file5

[root@localhost ~]# cat files.txt |xargs -I {} cp -rvf {} /tmp
‘/home/file1’ -> ‘/tmp/file1’
‘/home/file2’ -> ‘/tmp/file2’
‘/home/file4’ -> ‘/tmp/file4’
‘/home/file5’ -> ‘/tmp/file5’

[root@localhost ~]# cat files.txt |xargs -I YANG cp -rvf YANG /var/tmp //YANG:自定义符号
‘/home/file1’ -> ‘/var/tmp/file1’
‘/home/file2’ -> ‘/var/tmp/file2’
‘/home/file4’ -> ‘/var/tmp/file4’
‘/home/file5’ -> ‘/var/tmp/file5’

案例3
[root@localhost ~]# find /etc -iname “ifcfg“ |xargs -I {} cp -rf {} /tmp


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com

文章标题:每天一点Linux-15参数传递

本文作者:DROBP

发布时间:2019-08-23, 14:37:38

最后更新:2019-08-23, 14:40:50

原始链接:https://DROBP.github.io/2019/08/23/每天一点Linux-15参数传递/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏