cat 多个文件和子shell
cat multiple files and subshell
是否有一个 shell 命令可以执行以下操作:
cp header page.html
markdown page.md >> page.html
cat footer >> page.html
(Markdown 默认输出到标准输出。)
有同事建议
echo $(cat header) $(markdown page.md) $(cat footer) >> page.html
但是除了三个 subshells 和两只猫,这可能会为我赢得一个 "useless use of cat" 奖项,它还会去除换行符 - 这不好,特别是在 <pre><code>
块。
我想要的是这样的(显然行不通)
cat header $(markdown page.md) footer > page.html
我可以告诉 cat 使用 subshell 的输出来读取其中一个文件。理想情况下不设置任何临时文件、命名管道等
应该这样做:
(cat header; markdown page.md; cat footer) > page.html
因为你只有一个子 shell,所以我会使用这个 :
markdown page.md | cat header - footer > page.html
cat
参数中的 -
指的是标准输入,由 markdown
命令填充。
如果您有多个子 shell,我建议使用 anishane 评论的解决方案,进程替换:
cat header <(markdown page1.md) <(markdwon page2.md) footer > page.html
是否有一个 shell 命令可以执行以下操作:
cp header page.html
markdown page.md >> page.html
cat footer >> page.html
(Markdown 默认输出到标准输出。)
有同事建议
echo $(cat header) $(markdown page.md) $(cat footer) >> page.html
但是除了三个 subshells 和两只猫,这可能会为我赢得一个 "useless use of cat" 奖项,它还会去除换行符 - 这不好,特别是在 <pre><code>
块。
我想要的是这样的(显然行不通)
cat header $(markdown page.md) footer > page.html
我可以告诉 cat 使用 subshell 的输出来读取其中一个文件。理想情况下不设置任何临时文件、命名管道等
应该这样做:
(cat header; markdown page.md; cat footer) > page.html
因为你只有一个子 shell,所以我会使用这个 :
markdown page.md | cat header - footer > page.html
cat
参数中的 -
指的是标准输入,由 markdown
命令填充。
如果您有多个子 shell,我建议使用 anishane 评论的解决方案,进程替换:
cat header <(markdown page1.md) <(markdwon page2.md) footer > page.html