什麼是符號連結

以其他檔案或目錄的路徑作為內容的特殊檔案,開啟時會使用該路徑所指向的目標。以 ln -s 目標路徑 連結名稱 建立,ls -l 中開頭為 l,並顯示為「連結名稱 -> 目標路徑」。它也能指向其他檔案系統或目錄,但目標被刪除或移動後,就會成為沒有目標的失效連結。它與指向同一 inode 的別名「硬連結」有所區別。

日文名稱: シンボリックリンク

「符號連結」出現在1領域的1道練習題中(Linux與命令列基礎等)。

這個名詞所屬的領域: Linux與命令列基礎

建立方式與顯示

以 ln -s /opt/tools/sim-2.3 /opt/tools/sim 建立後,開啟或 cd 到 /opt/tools/sim 時,實際使用的是 /opt/tools/sim-2.3。ls -l 會顯示「sim -> /opt/tools/sim-2.3」,可用 readlink 或 realpath 確認指向的目標。連結本身的權限不會被使用,而是依目標檔案的權限判斷。

相對路徑與絕對路徑

連結的內容寫成相對路徑時,會以連結所在的目錄為起點追蹤。優點是整個目錄移到別處時關係仍能保持,但只移動連結就會失效。寫成絕對路徑時,連結移到哪裡都指向同一位置,但目標的目錄結構改變就會失效。

與硬連結的差異

硬連結是再增加一個指向同一 inode 的名稱,即使刪除原本的名稱,內容也會保留。但它只能在同一個檔案系統中建立,通常也不能對目錄建立。符號連結只記錄路徑,所以能跨越檔案系統,也能指向目錄,但目標消失後就會失效。

常見問題

符號連結用在哪些場合?

常見的例子是切換工具的版本。讓 /opt/tools/sim 指向最新版本的目錄,使用者的腳本維持相同路徑,只要改指連結就能更換版本。也用於共用函式庫從 libfoo.so 到 libfoo.so.1.2 的命名,或從專案中參照放在其他磁碟上的大型資料。

如何找出失效連結?

ls -l 顯示的目標若不存在,許多環境會以顏色或顯示方式區分。使用 GNU 的 find,執行 find . -xtype l 就能列出沒有目標的符號連結。嘗試開啟失效連結時,會出現「No such file or directory」的錯誤。

解析中的「符號連結」

出現「符號連結」的題目(1題)

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

相關名詞

硬連結 inode 正規表示式 訊號(Unix) 超級使用者 管線(|) 輸入輸出重新導向 檔案權限 環境變數 cron

前往名詞解釋列表