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等命令一起组合使用,可以实现的功能更多。

你可能感兴趣的:(Linux xargs命令使用实例)