xargs 知多少?
发布于 2022-06-03 23:43
有了 xargs
神器,再也不用担心 Linux
上的数据操作了。
由来
假如我们想查找当前服务器上运行的 Python
应用,并且列出它们的进程 id
,我们可以使用 awk
命令进行操作。
ps aux | grep python | awk -F " " '{print $2}'
查出来后,假如我们又想要把这些进程给强制删除呢?我想到了直接用 kill -9 进程ID
,我们来试一下。
在这里,我命令后面直接跟了 kill -9
,进程 ID
我以为管道符能直接给我传过来,但是并没有,这是咋回事?
其实,在 Linux
命令中,大多数命令都不接受标准输入作为参数,只能在命令后直接跟上参数,这就导致我们无法使用管道符进行参数的传递。同样的命令还有 echo
等。
这时,我们的 xargs
就可以派上用场了,xargs
的作用就是将标准输入转为命令行参数。对于上面的场景,我们可以这样做 ps aux | grep python | grep -v grep | awk -F " " '{print $2}'| xargs kill -9
执行命令后,什么都没输出。我们继续执行查询命令查找 Python
进程,可以看到,进程已经都被杀掉了。
详细介绍
xargs
命令的格式为 xargs [-option] [command]
,最终真正执行的命令是 command
,它接受来自 xargs
的传递的参数。command
可以缺省,默认为 echo
。
进阶使用
-p 参数 / -t 参数
有时候我们的 command
命令比较复杂时我们可能想要知道最终到底执行什么操作,这时我们可以加上 -p
参数,加上后会打印出最终执行的命令,让我们来确认是否执行。
如果使用 -t
参数的话会直接打印命令并执行,不会询问我们。
-I 参数
如果我们的命令需要多次使用命令行参数时,我们可以使用 -I
参数,-I
后面跟的是命令行参数的替代字符串。比如
在命令中,我们使用 -I {}
指定了 {}
作为我们的命令行参数,紧接着使用了 -n 1
,它表示我们指定将每一项执行一次命令。最后我们执行 sh
命令输出了命令行参数,并创建了对应的文件。
以上就是一些常用的参数,如果还想了解更多,可以使用 man xargs
,毕竟,自己动手,丰衣足食。-_-
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材