【视频笔记】每天一个Linux命令-xargs
命令xargs是英语词组extended arguments的缩写,把标准输入转化为参数,
有些命名是不读取标准输入的,如echo命令,echo "hello" |echo 不打印
echo "hello" | xargs echo 打印hello
xargs 默认会跟echo命令,上面等价于echo "hello" | xargs
xargs会按分隔符去拆分参数,默认分隔符是空格,echo "hello world" | xargs echo 实际是一次性传了两个参数给echo,两个参数一次打印出来了
xargs -n 数值,一次性传几个参数
echo "hello world" | xargs -n 1 echo 则一次传递一个参数,会换行打印
[root@localhost ~]# echo "hello world" |xargs echo hello world [root@localhost ~]# echo "hello world" |xargs -n 1 echo hello world
xargs -d 符号,指定拆分的分隔符
#echo会在每一个字符后面去打印一个换行
[root@localhost ~]# echo "hi,job" |xargs -d "," -n 1 echo
hi
job
[root@localhost ~]#
不要echo打印换行,加一个-n
[root@localhost ~]# echo -n "hi,job" |xargs -d "," echo hi job [root@localhost ~]#
-p参数,交互操作
[root@localhost ~]# echo -n "hi,job" |xargs -d "," -p echo echo hi job ?...n [root@localhost ~]# echo -n "hi,job" |xargs -d "," -p echo echo hi job ?...y hi job [root@localhost ~]#
-t参数,先打印执行的命令,再执行
[root@localhost ~]# echo -n "hi,job" |xargs -d "," -t echo echo hi job hi job [root@localhost ~]# [root@localhost ~]# echo -n "hi,job" |xargs -d "," -t -n 1 echo echo hi hi echo job job [root@localhost ~]#
xargs -I 占位符{}, 它叫initial arguments,然后在需要用到这个值的地方,写上占位符{}
[root@localhost ~]# echo -n "hi,job" |xargs -I {} echo {} hi,job
xargs -r参数,它是no run if empty的缩写,没有参数传下来时,就不执行
[root@localhost ~]# echo | xargs -r echo
[root@localhost ~]#
xargs 遇到\或引号时,如果未做转义,则 不会打印该符号
[root@localhost tmp]# cat test1.txt aa bb cc \n \t \a [root@localhost tmp]# cat test1.txt | xargs echo aa bb cc n t a [root@localhost tmp]
上面echo会默认把参数按一行来打印,\都没有了
使用单引号,双银行,\转义后,则会保留
[root@localhost tmp]# cat test2.txt aa bb cc '\'n "\"t \\a [root@localhost tmp]# cat test2.txt | xargs echo aa bb cc \n \t \a [root@localhost tmp]
通过xargs批量传递参数创建文件(批量创建)
[root@localhost tmp]# cat test2.txt |xargs touch
通过xargs批量传递参数删除文件(批量删除)
[root@localhost tmp]# cat test2.txt |xargs rm
删除前,需要提示,加-p参数
需要一次删除一个,加 -n 1参数
浙公网安备 33010602011771号