Linux與命令列基礎
$ echo a > f.txt
$ echo b > f.txt
$ echo c >> f.txt
$ cat f.txt依序執行上面的指令時,最後的 cat 顯示的內容是下列何者?
- A只有 c 一行
- Bb 與 c 兩行
- Ca、b、c 三行
查看答案與解析
正確答案:B. b 與 c 兩行
「>」是把輸出寫入檔案的重新導向,若檔案已存在,會先清空內容再寫入(覆寫)。「>>」則是附加到檔案末尾。第1行寫入 a,第2行的 > 讓內容只剩 b,第3行的 >> 在後面加上 c,所以 f.txt 成為 b 與 c 兩行。為了避免用 > 不小心清掉重要檔案,在 bash 中也可以用 set -o noclobber 禁止覆寫。
- A. 「>>」是附加而不是覆寫,所以第2行寫入的 b 會留下。
- B. 正確。> 讓內容只剩 b,>> 再附加 c。
- C. 第2行的「>」會先清空檔案再寫入,所以第1行的 a 不會留下。