Linux xargs命令使用实例 - Go语言中文社区

Linux xargs命令使用实例


写在前面

由于在工作上经常使用maclinux系统,对于操作命令来说,已经没有什么新鲜感了,但是xargs最近为我提供了不少帮忙,所以记录一下。

简介

xargs是一条Unix类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题[1]
注:摘自维基百科

实例
  •   ps -ef | grep nginx | grep -v grep  | awk '{print $2}' | xargs kill -9
    
    在没有killall命令和找不到启动脚本的情况下,快速杀死nginx进程。
    1. 当然使用/usr/local/sbin/nginx -s stop可能也能满足你的需求
    2. 甚至都可以使用for i in `ps -ef | grep nginx | grep -v grep | awk '{print $2}'`;do kill -9 $i;done;来杀死 nginx进程。
  •   git diff  branch1 branch2 --name-only | xargs zip branch-diff.zip
    
    导出git两个分支之间的差异文件并打包。
    1. 这个使用类似上面for循环实现起来并不难,也不麻烦
    2. 除了打zip把,它也可以打tar包,如: git diff branch1 branch2 --name-only | xargs tar -rf branch-diff.tar
    3. 同理,也可以导出版本之间的差异git diff-tree -r --no-commit-id --name-only 4fbf8e5 | xargs tar -rf commit-diff.tar
  •   grep -rl beego ./ | xargs sed -i 's/beego/zzzzz/g'
    
    替换当前所有包含beego的文件中的beego为zzzzz哦。
    1. 当然使用sed -i 's/zzzz/beego/g' `grep -rl zzzzz ./`可能也能满足你的需求
    2. 甚至都可以使用for i in `grep -rl zzzzz ./`;do sed -i 's/zzzzz/beego/g' $i;done; 来替换.
综上

通过上面三个举例,可以看到在杀死进程、打包文件、替换字符等方面都有xargs的身影,足见其之强大。它和grepfindawk等命令一起组合使用,可以实现的功能更多。

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/77cef1ad05eb
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 11:58:37
  • 阅读 ( 1226 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢