命令是获取标准输入来给其他命令传递参数的,
所以一般与管道符()一起使用
其作用与管道符()类似
但是Linux命令用得多了就有了个疑问:
命令与管道()到底有什么区别?
应该怎么用呢?
shell命令加管道()的一般形式为(小括号里的表示可选):
这里我们先作下约定:
管道(”|“)前面的命令()我们叫它
管道(”|“)后面的命令[]我们叫它
与管道只有2点区别:
区别1:命令B有时候是不接受管道传参的
接受管道传参的命令:,,,,,

区别2:管道传递参数的是字符串
管道把标准输入用引号引起来,表示1个参数
xargs没有用引号引起来,如果有空格会被识别为多个参数
我们来看一个例子:
命令1:
命令2:
看下输出结果:
我们发现命令1中的命令相当于执行的是:
命令2中的命令相当于执行的是:
加引号相当于给传递的只有1个参数,而且只是一个由引号引起的字符串
不加引号,同时的输出结果还有空格,就可能给传递多个参数,
看下面2个需求:
我们希望查找:以结尾的文件中,包含字符串的文件
我们首先想到的命令是:
输出结果:

正确的应该是:
于是我们发现这个文件中有用到xargs命令

换句话说可以通过管道给后面的命令传递多个参数,而且不会被当成字符串
场景1:xargs -i:查找指定格式的文件,并复制到别处
一般是把参数追加到命令的最后,但是如果我想把参数放在命令的中间怎么办呢?于是就有了参数
这是最常用的使用场景,下面的是不那么常用的,不过也很有用
场景2:xargs -d:指定分隔符
默认以空格分隔参数,如果我希望是其他的分隔符呢?于是就有了参数
两个命令意思是一样的:

这个时候输出结果就不一样了

场景3:xargs -t或者-p:命令执行之前先打印下最终要执行的命令
使用参数和
不询问,直接执行
用户确认(输入)后执行
可以自己试试下面的命令:
场景4:xargs -n或者-L:我想find 多个匹配
方法2
场景5:xargs -I:给参数赋值给变量
参数可以把值赋给变量
这个场景更加不常用,
也不是说不常用,因为一般能用这个参实现的用都能实现
不过可以试试下面的命令:
该命令意为将标准输入传递的值赋值给变量,
然后先打印变量值,再创建文件
一般来说都使用参数搞定,
两个命令意思是一样的
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2124.html