[LPIC-1]GNU and Unix Commands 49

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

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章