Bash

(echo ’text’ ; cat file.txt ) > new file.txt 實際上是如何工作的?

  • June 19, 2018

所以,這裡有一個簡單的程式碼:

(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 將命令行分為三個部分:

  1. (echo ...)
  2. >
  3. file.txt

第 1 部分的(標準)輸出——不是任何標準錯誤輸出——被第 2 部分重定向到第 3 部分給出的文件中。第一部分中的括號只是將重定向運算符的所有輸出組合在一起>

引用自:https://unix.stackexchange.com/questions/450740