ln — 建立檔案連結

建立硬連結或符號連結(symlink)到檔案或目錄。

語法

ln [選項] 目標 連結名稱

常用選項

選項 說明 範例
-s, --symbolic 建立符號連結(最常用;不加 -s 預設為硬連結) ln -s target link_name
-f, --force 若連結目的地已存在則先刪除再建立 ln -sf new_target existing_link
-v, --verbose 顯示已建立的連結資訊 ln -sv target link
-r, --relative 建立相對路徑的符號連結(相對於連結位置) ln -sr /abs/path link
-i, --interactive 目的地已存在時詢問是否覆蓋 ln -si target link
-n, --no-dereference 若目的地是符號連結,視為普通檔案處理 ln -sfn target link

使用範例

範例 1:建立符號連結(最常用)

建立 current-config 符號連結指向 config-v2.yml,常用於版本切換。

$ ln -s config-v2.yml current-config
目標路徑(第一個參數)若為相對路徑,是相對於連結檔案所在位置。
範例 2:連結到目錄(常用於部署)

讓 /var/www/html 連結到 /var/releases/v2.0,方便切換版本。

$ sudo ln -sfn /var/releases/v2.0 /var/www/html
-n 確保若 html 是已存在的符號連結,會正確替換而非在其下建立新連結。
範例 3:建立絕對路徑符號連結

將使用者常用工具連結到系統 bin 目錄,方便全系統使用。

$ sudo ln -s /opt/myapp/bin/myapp /usr/local/bin/myapp
範例 4:確認連結目標

使用 ls -la 查看符號連結指向的目標(-> 後面即為目標)。

$ ls -la /usr/local/bin/python3
lrwxrwxrwx 1 root root 7 Jan 1 2026 /usr/local/bin/python3 -> python3.11

常見錯誤與排錯

ln: failed to create symbolic link 'link': File exists
原因
目的地的連結名稱已存在。
解法
加上 -f 強制覆蓋:ln -sf target link,或先刪除舊連結再建立。
符號連結顯示紅色(broken symlink)
原因
符號連結的目標不存在(目標檔案被刪除或移動)。
解法
用 readlink link_name 確認目標路徑,重新建立或修正目標。

延伸閱讀