【问题标题】:Combine linux commands into one output将 linux 命令合并为一个输出
【发布时间】:2013-03-10 20:57:29
【问题描述】:

我将一些文件放入 Markdown 解析器中,并希望预先/附加一个头/脚。目前,我用几个命令来做,但想用一个衬里来做。这是我要添加的命令...

cat  `find .. -name "*.md" -type f` | marked

这会产生我的文档的中间部分,所以我想做类似...

cat head.template (cat `find ... ` | marked)

【问题讨论】:

    标签: macos bash ubuntu cat


    【解决方案1】:

    尝试像这样对“源”命令进行分组:

    { cat header_part ; cat `find ...` ; cat footer_part } | marked
    

    如果你只想解析中间部分:

    { cat header_part ; cat `find ...` | marked ; cat footer_part } > output_file
    

    感谢Ansgar Wiechers,更喜欢$() 而不是反引号:

    { cat header_part ; cat $(find ...) | marked ; cat footer_part ) > output_file
    

    【讨论】:

    • 差不多,但我只希望通过标记解析中间的...也许我会尝试移动分组大括号
    • 不需要cats的家人:cat header_part $(find ... | marked) footer_part > output_file
    • @Ansgar:其实那不做同样的事情,需要保留猫的家庭。
    • FWIW,find .. -name '*.md' -type f -exec cat {} + 将会是
    【解决方案2】:

    这对我有用,$( ... commands ... ) 和反引号的组合。

    echo `cat head.html.snippet`  `cat $(find .. -name "*.md" -type f) | marked` `cat foot.html.snippet` > all.htm
    

    【讨论】:

      【解决方案3】:

      如果名称包含空格,这将使用较少的子进程并且有效:

      shopt -s globstar; { cat head.html.snippet; cat ../**/*.md | marked; cat foot.html.snippet; } > all.htm

      您也可以使用进程替换:

      cat head.html.snippet <(find .. -name '*.md' -exec cat {} \+ | marked) foot.html.snippet > all.htm

      【讨论】:

        猜你喜欢
        • 2012-10-25
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多