When running the command



sed -e "s/a/b/" /tmp/file >/tmp/file

While /tmp/file contains data, why is /tmp/file empty afterwards?

A. The file order is incorrect. The destination file must be mentioned before the command to ensure redirection.
B. The command sed did not match anything in that file therefore the output is empty.
C. When the shell establishes the redirection it overwrites the target file before the redirected command starts and opens it for reading.
D. Redirection for shell commands do not work using the > character. It only works using the | character instead.

題解

「sed」指令可以處理檔案的文字內容,能夠進行許多不同的動作組合,動作是使用一串特定格式的字串來定義。「-e」參數的作用可以加入動作組合給「sed」指令,如果沒有使用「-e」參數或是「-f」參數,就會以第一個參數作為動作組合。

在這題目中的指令,會讀取「/tmp/file」檔案,並將每行第一次出現的「a」取代成「b」,再將結果存回「/tmp/file」檔案。但是「sed」指令在剛開始執行的時候,「/tmp/file」就會被先覆寫成沒有內容的檔案,所以「sed」指令就不會從「/tmp/file」讀取到任何的內容,因此答案是選項C。