Linux與命令列基礎

$ echo a > f.txt
$ echo b > f.txt
$ echo c >> f.txt
$ cat f.txt

依序執行上面的指令時,最後的 cat 顯示的內容是下列何者?

  1. A只有 c 一行
  2. Bb 與 c 兩行
  3. 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 不會留下。
練習這個領域 前往領域頁面

Linux與命令列基礎的其他題目

  1. 如上所示,在有 a.txt、沒有 nofile 的目錄中執行最後一個指令。結果是下列何者?
  2. 在上面的操作中,最後一個指令輸出的值是下列何者?
  3. 在上面的操作中,最後的 grep 輸出的行是下列何者?
  4. 選項中省略行首的空白。在上面的操作中,最後的管線輸出的行是下列何者?
  5. 想讓之後附加到伺服器日誌檔 /var/log/app.log 的行,在每次附加時持續顯示在畫面上。適當的指令是下列何者?