cat多个文件和子shell

时间:2016-08-18 09:57:25

标签: bash pipe cat

是否有一个shell命令可以执行以下操作:

cp header page.html
markdown page.md >> page.html
cat footer >> page.html

(Markdown默认输出到stdout。)

一位同事建议

echo $(cat header) $(markdown page.md) $(cat footer) >> page.html

但是除了三个子壳和两只猫之外,这可能会让我赢得一个无用的猫和#34;奖励,它也剥离换行 - 这是不好的,特别是在<pre><code>块。

我喜欢的是这样的东西(显然不起作用)

cat header $(markdown page.md) footer > page.html

我可以告诉cat使用子shell的输出来读取其中一个文件。理想情况下,无需设置任何临时文件,命名管道等。

2 个答案:

答案 0 :(得分:6)

由于你只有一个子shell我会使用它:

markdown page.md | cat header - footer > page.html

-参数中的cat引用stdin,它由markdown命令填充。

如果您有多个子shell,我建议使用解决方案anishane评论,进程替换:

cat header <(markdown page1.md) <(markdwon page2.md) footer > page.html

答案 1 :(得分:2)

应该这样做:

(cat header;  markdown page.md;  cat footer) >   page.html