所以,这是一个简单的代码:
(echo "Some text to prepend"; cat gero.txt) > file.txt
我无法真正掌握这段代码的机制。所以基本上 gero.txt 是一个已经存在的文件,我们创建一个新的 file.txt ,其中包含“要前置的一些文本”+gero.txt 我没有得到的是括号中的部分。在没有管道等明显操作符的情况下,它到底如何将 echo 的输出重定向到 cat |
?
答案1
当您在中运行一系列命令时交互的外壳,像
echo xxx; cat file; ls; echo yyy
然后所有内容都会连续执行,并将输出发送到终端。
但是,如果您在括号内运行这些命令,则会出现()
一个新的非交互式shell 已创建,所有内容都在其中执行。现在,>file.txt
将()
整个输出从这个隐藏的子 shell 重定向到一个文件。
答案2
shell 分三个部分获取该命令行:
(echo ...
)>
file.txt
来自第 #1 部分的(标准)输出(不是任何 stderr 输出)由第 #2 部分重定向到第 #3 部分给出的文件中。第一部分中的括号只是将重定向运算符的所有输出组合在一起>
。