当前位置:网站首页 > 技术博客 > 正文

xargsgrep详解



命令是获取标准输入来给其他命令传递参数的,
所以一般与管道符()一起使用
其作用与管道符()类似
但是Linux命令用得多了就有了个疑问:
命令与管道()到底有什么区别?
应该怎么用呢?

shell命令加管道()的一般形式为(小括号里的表示可选):

 

这里我们先作下约定:
管道(”|“)前面的命令()我们叫它
管道(”|“)后面的命令[]我们叫它

与管道只有2点区别:

区别1:命令B有时候是不接受管道传参的

接受管道传参的命令:,,,,,

 

不接受管道传参的命令一般会报缺少参数的错误

区别2:管道传递参数的是字符串

管道把标准输入用引号引起来,表示1个参数
xargs没有用引号引起来,如果有空格会被识别为多个参数
我们来看一个例子:
命令1:

 

命令2:

 

看下输出结果:

 

我们发现命令1中的命令相当于执行的是:

 

命令2中的命令相当于执行的是:

 

加引号相当于给传递的只有1个参数,而且只是一个由引号引起的字符串

不加引号,同时的输出结果还有空格,就可能给传递多个参数,

看下面2个需求:
我们希望查找:以结尾的文件中,包含字符串的文件
我们首先想到的命令是:

 

输出结果:
输出结果

 

正确的应该是:

 

于是我们发现这个文件中有用到xargs命令

 

https://blog.csdn.net/daerzei/article/details/realtime_import_stop.sh这个文件中有用到xargs命令

换句话说可以通过管道给后面的命令传递多个参数,而且不会被当成字符串

场景1:xargs -i:查找指定格式的文件,并复制到别处

一般是把参数追加到命令的最后,但是如果我想把参数放在命令的中间怎么办呢?于是就有了参数

 

这是最常用的使用场景,下面的是不那么常用的,不过也很有用

场景2:xargs -d:指定分隔符

默认以空格分隔参数,如果我希望是其他的分隔符呢?于是就有了参数

 

两个命令意思是一样的:
xargs -d两个命令意思是一样的

 

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

场景3:xargs -t或者-p:命令执行之前先打印下最终要执行的命令

使用参数和
不询问,直接执行
用户确认(输入)后执行
可以自己试试下面的命令:

 

场景4:xargs -n或者-L:我想find 多个匹配

 

方法2

 

场景5:xargs -I:给参数赋值给变量

参数可以把值赋给变量
这个场景更加不常用,
也不是说不常用,因为一般能用这个参实现的用都能实现
不过可以试试下面的命令:

 

该命令意为将标准输入传递的值赋值给变量,
然后先打印变量值,再创建文件
一般来说都使用参数搞定,

 

两个命令意思是一样的

  • 上一篇: c语言结构体数组查找
  • 下一篇: jvm jstack
  • 版权声明


    相关文章:

  • c语言结构体数组查找2025-03-08 23:30:00
  • 二维码生成软件2025-03-08 23:30:00
  • dos和linux命令对照表2025-03-08 23:30:00
  • dbcp2连接池配置详解2025-03-08 23:30:00
  • 适配器模式定义2025-03-08 23:30:00
  • jvm jstack2025-03-08 23:30:00
  • 序列化和反序列化的步骤2025-03-08 23:30:00
  • 预测模型的构建及应用2025-03-08 23:30:00
  • linux中nice命令和renice命令2025-03-08 23:30:00
  • cjson详解简书2025-03-08 23:30:00