首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
程序人生
›
Linux输出转换命令 xargs
返回列表
发新帖
Linux输出转换命令 xargs
[复制链接]
发表于 2022-11-26 05:13:43
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
一、基本用法
xargs命令的作用,是将标准输入转为命令行参数。
原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数
如下面 echo 不接受标准输出做参数,可用 xargs 做转换:
$ echo "hello world" | xargs echo
hello world
复制
代码
二、参数
-d 指定分隔符
默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。
$ echo "one two three" | xargs mkdir
复制
代码
上面
代码
中,mkdir会新建三个子目录,执行mkdir one two three。
-d参数可以更改分隔符
$ echo -e "a\tb\tc" | xargs -d "\t" echo
a b c
复制代码
上面的命令指定制表符\t作为分隔符,所以a\tb\tc就转换成了三个命令行参数。echo命令的-e参数表示解释转义字符。
-p -t打印将要执行的命令
-p参数打印出要执行的命令,询问用户是否要执行。
$ echo 'one two three' | xargs -p touch
touch one two three ?...
复制代码
-t参数则是打印出最终要执行的命令,然后直接执行,不需要用户确认。
$ echo 'one two three' | xargs -t rm
rm one two three
复制代码
-I 传递参数起别名
如果xargs要将命令行参数传给多个命令,可以使用-I参数。【貌似,会按空格或回车对参数进行分割,然后重复执行命令,而不是当成命令的多个参数】
-I指定每一项命令行参数的替代字符串。
$ cat foo.txt
one
two
three
$ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file'
one
two
three
$ ls
one two three
复制代码
上面代码中,foo.txt是一个三行的文本文件。我们希望对每一项命令行参数,执行两个命令(echo和mkdir),使用-I file表示file是命令行参数的替代字符串。执行命令时,具体的参数会替代掉echo file; mkdir file里面的两个file。
-l -L 指定多少行作为一个命令行参数
$ echo -e "a\nb\nc" | xargs -L 1 echo
a
b
c
复制代码
-n 指定一行内多项作为一个命令行参数
$ echo {0..9} | xargs -n 2 echo
0 1
2 3
4 5
6 7
8 9
复制代码
--max-procs 多线程执行
xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。
--max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。
$ docker ps -q | xargs -n 1 --max-procs 0 docker kill
复制代码
上面命令表示,同时关闭尽可能多的 Docker
容器
,这样运行速度会快很多
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
DevOps与敏捷开发
向量数据库
图数据库
人工智能
开源技术
鸿蒙
鼠扑
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表