Bash 如何将文字文本添加到Unix';cat&x27;命令

Bash 如何将文字文本添加到Unix';cat&x27;命令,bash,cat,Bash,Cat,我试图将一些文件放在一起,同时在文件之间添加一些文本。我是Unix新手,不懂语法 以下是我失败的尝试: cat echo "# Final version (reflecting my edits)\n\n" final.md echo "\n\n# The changes I made\n\n" edit.md echo "\n\n#Your original version\n\n" original.md > combined.md 我该如何解决这个问题?我应该用管子还是别的什么

我试图将一些文件放在一起,同时在文件之间添加一些文本。我是Unix新手,不懂语法

以下是我失败的尝试:

cat echo "# Final version (reflecting my edits)\n\n" final.md echo "\n\n# The changes I made\n\n" edit.md echo "\n\n#Your original version\n\n" original.md > combined.md

我该如何解决这个问题?我应该用管子还是别的什么

如果我理解你的意思,应该是:

echo "# Final version (reflecting my edits)\n\n" >> combined.md
cat final.md >> combined.md
echo "\n\n# The changes I made\n\n" >> combined.md
cat edit.md >> combined.md

以此类推。

流程替代似乎有效:

$ cat <(echo 'FOO') foo.txt <(echo 'BAR') bar.txt
FOO
foo
BAR
bar

$cat使用命令组将输出合并到一个流中:

{
   echo -e "# Final version (reflecting my edits)\n\n"
   cat final.md 
   echo -e "\n\n# The changes I made\n\n"
   cat edit.md 
   echo -e "\n\n#Your original version\n\n"
   cat original.md
} > combined.md

您可以使用进程替换和命令替换(参见Lev Levitsky的回答)来使用一个命令(而不是这里使用的单独的
cat
进程)完成所有操作,但是,如果文件太少,这应该足够有效。

如果您不使用单引号FOO,可以在here文档中嵌入命令替换。@chepner很高兴知道,但我在这里如何使用它?我已经对您的问题进行了大量编辑;我认为您不能将here字符串与其他文件参数组合到
cat
(在我的测试中,here字符串被忽略)。@chepner啊,我现在明白了,谢谢。这里从未真正使用过这样的字符串。@chepner不应该有2
这样的好选项来避免重复指定相同的输出文件吗
{
   echo -e "# Final version (reflecting my edits)\n\n"
   cat final.md 
   echo -e "\n\n# The changes I made\n\n"
   cat edit.md 
   echo -e "\n\n#Your original version\n\n"
   cat original.md
} > combined.md