前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >xargs note

xargs note

作者头像
changan
发布2020-11-04 15:02:35
发布2020-11-04 15:02:35
45400
代码可运行
举报
运行总次数:0
代码可运行

作用

xargs,是execute arguments的缩写,它的作用是从标准输入中读取内容,并将 此内容传递给它要协助的命令,并作为那个命令的参数来执行。

与管道的区别

  • 管道可以实现:将前面的标准输出作为后面的 标准输入
  • 管道无法实现:将前面的标准输出作为后面的 命令参数
代码语言:javascript
代码运行次数:0
复制
$ cat /etc/passwd | grep root
# grep命令可以接受标准输入作为参数

大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数

echo "one two three" | xargs mkdir
# mkdir one two three

分隔符

  • xargs会将前一个命令的标准输出转换成命令参数,但很多人可能不知道的是,xargs的标准输入中出现的“换行符、空格、制表符”都将被空格取代
  • xargs默认的分隔符是空格
  • 还可以使用-d选项来指定任何一个符号作为分隔符

find and xargs

代码语言:javascript
代码运行次数:0
复制
find . -name '*.log' -print0 | xargs -0 rm -f

xargs提供了-0选项,允许将NULL作为分隔符,而find命令也心有灵犀地提供了对应的选项来产生以NULL字符作为分隔符的输出。

find命令提供的对应方法是-print0选项,在文件名之后输出NULL,而不像-print选项那样输出换行符(换行符会被xargs替换成空格)。

xargs的-0选项不仅可以将分隔符从默认的空格变成NULL,还会将单引号、双引号、反斜线等统统默认为是普通字符。所以说,-0选项特别适合处理命令参数中含有引号、空格、反斜线的情况.

other options

  • p 参数打印出要执行的命令,询问用户是否要执行
  • I 要将命令行参数传给多个命令
代码语言:javascript
代码运行次数:0
复制
$ cat foo.txt
one
two
three

# -I file表示file是命令行参数的替代字符串
$ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file'
one 
two
three

$ ls 
one two three
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作用
  • 与管道的区别
  • 分隔符
  • find and xargs
  • other options
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档