Linux與命令列基礎

$ echo hello > a.txt
$ ln a.txt h.txt
$ ln -s a.txt s.txt
$ rm a.txt
$ cat h.txt
$ cat s.txt

依序執行上面的指令時,最後兩個 cat 的結果是下列何者?

  1. Ah.txt 與 s.txt 都顯示 hello
  2. Bh.txt 出現找不到檔案的錯誤,s.txt 顯示 hello
  3. Ch.txt 顯示 hello,s.txt 出現找不到檔案的錯誤
查看答案與解析

正確答案:C. h.txt 顯示 hello,s.txt 出現找不到檔案的錯誤

用 ln 建立的硬連結,是指向與原檔案相同 inode(管理檔案內容與屬性、附有編號的資訊)的另一個名稱。rm a.txt 刪除的只是 a.txt 這個名稱,由於 h.txt 這個名稱還在,內容不會消失,cat h.txt 會顯示 hello。用 ln -s 建立的符號連結,是以「a.txt」這個路徑為內容的另一個檔案,因此 a.txt 消失後就沒有可追蹤的目標,cat s.txt 會出現「No such file or directory」的錯誤。像這樣目標已消失的符號連結,會以失效連結的狀態留下來。

  • A. 符號連結是追蹤路徑來開啟檔案,因此 a.txt 消失後就無法經由 s.txt 讀取。
  • B. 硬連結與符號連結的性質顛倒了。只要還留有一個名稱,就能經由硬連結讀取內容。
  • C. 正確。硬連結是指向同一 inode 的名稱所以會留下,符號連結則成為失效連結。
練習這個領域 前往領域頁面

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

  1. 某個目錄中有 a1.txt、a2.txt、a10.txt、b1.txt、c1.txt、a1.csv 共6個檔案。在此目錄執行「ls [ab]?.txt」時,顯示的檔案數量是下列何者?
  2. 對檔案 run.sh 執行「chmod 754 run.sh」後,「ls -l run.sh」那一行開頭顯示的權限表示法是下列何者?
  3. touch 以 666、mkdir 以 777 去掉 umask 的位元,作為新檔案與新目錄的權限。在 umask 為 027 的 shell 中建立新檔案與新目錄時,兩者權限的組合何者正確?
  4. 目錄 d 的權限為 rwx--x--x(711),其中的檔案 f.txt 的權限為 rw-r--r--(644)。既不是擁有者也不是超級使用者的使用者執行「ls d」與「cat d/f.txt」時,結果是下列何者?
  5. 關於 Linux 的 sudo 指令,下列敘述何者正確?