Bash
(echo ’text’ ; cat file.txt ) > new file.txt 實際上是如何工作的?
所以,這裡有一個簡單的程式碼:
(echo "Some text to prepend"; cat gero.txt) > file.txt
而且我無法真正掌握這段程式碼的機制。所以基本上gero.txt 是一個已經存在的文件,我們創建一個新的file.txt 並帶有“一些要預先設置的文本”+gero.txt 我不明白的是括號中的那部分。它究竟是如何將 echo 的輸出重定向到 cat 而沒有像管道
|
等明顯的運算符的?
當您在互動式shell中執行一系列命令時,例如
echo xxx; cat file; ls; echo yyy
然後一切都連續執行並將輸出發送到終端。
但是,如果您在括號內執行這些命令,則會創建
()
一個新的非互動式shell,並在其中執行所有操作。現在,>file.txt
在()
您將整個輸出從這個隱藏的子 shell 重定向到一個文件之後。
shell 將命令行分為三個部分:
(echo ...
)>
file.txt
第 1 部分的(標準)輸出——不是任何標準錯誤輸出——被第 2 部分重定向到第 3 部分給出的文件中。第一部分中的括號只是將重定向運算符的所有輸出組合在一起
>
。