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 確認目標路徑,重新建立或修正目標。