zoukankan      html  css  js  c++  java
  • 玩转xargs

      xargs命令可以把标准输入数据转换成命令行参数。也可以将单行或多行文本输入转换成其他格式,是构建单行命令的重要组件之一。

      xargs命令应该紧跟在管道操作符之后,以stdin作为主要的源数据流,使用格式:

      COMMAND | xargs [OPTIONS] ...

      示例一:将多行输入转换成单行输出

      

      示例二:将单行输入转换成多行输出

      

      -n:是每行的最大参数的个数

      空格是xargs的默认输入定界符,如下示例所示:

      

      -d DELIM:以指定字符为输入定界符

      示例三:读取stdin,将格式化参数传递给命令

      定义一个简单脚本test.sh:

    #!/bin/bash
    #
    echo $*"#"

      定义一个脚本参数列表文件args.txt:

      

      通过xargs命令可以实现一次向脚本传递n个参数,如:

      

      有时候,除了向脚本传递一些可变参数外,还有一些固定不变的命令参数,如何实现变化的参数和固定的参数一起传递给脚本执行呢?

      例如,要实现以下效果:

        ./test.sh -p arg1 -d

               ./test.sh -p arg2 -d

        ./test.sh -p arg2 -d

      这时候就用到-I选项了,先看效果:

      

      -I {} 指定了替换字符串。对于每一个命令参数,字符串{}都会被从stdin读取到的参数替换掉。

      示例四:与find配合使用完成相应功能

      最好的实现方式是:把find的输出作为xargs的输入,就必须将-print0与find结合使用,以字符null('')来分隔输出。 

    /*示例*/
    find ./ -type f -name "*.txt" -print0 | xargs -0 rm -f

      xargs -0 :将作为输入定界符

       

  • 相关阅读:
    贝叶斯在机器学习中的应用(一)
    使用ajax发送的请求实现页面跳转
    关于welcom-file-list 失效
    在新的线程中使用session 出现的问题
    关于innerHtml= 与 html() 区别
    request.getAttribute()和 request.getParameter()有何区别?
    __STL_VOLATILE
    声明一个返回特定类型函数指针的函数
    关于vue的基础概念
    Vue.js结合vue-router和webpack编写单页路由项目
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/6375813.html
Copyright © 2011-2022 走看看