ln 指令筆記

Posted by Adam on August 24, 2022
# `ln` 指令筆記 `ln` 用來建立**連結(link)**,讓不同的檔案路徑可以指向同一份資料。語法: ```bash ln [選項] 目標檔案 連結名稱 ``` ## 兩種連結類型 ### 1. 硬連結(Hard Link) ```bash ln 原始檔 連結名 ``` - 硬連結是替同一個 **inode**(檔案在磁碟上的實際資料)再建立一個目錄項目(檔名)。 - 兩個檔名的地位完全平等,沒有「誰是原始、誰是連結」的分別。 - 刪除其中一個檔名,資料不會消失,只有當所有指向該 inode 的檔名都被刪除,資料才會真正釋放。 - **限制:** - 不能跨檔案系統(不同硬碟分割區/掛載點)建立。 - 不能對目錄建立硬連結(避免造成循環)。 ### 2. 軟連結 / 符號連結(Symbolic Link, Symlink) ```bash ln -s 原始檔 連結名 ``` - 軟連結是一個**獨立的小檔案**,內容只是「指向目標路徑的文字」,類似捷徑(shortcut)。 - 有明確的方向性:連結檔 → 目標檔。 - 若刪除或搬移原始檔案,軟連結會變成「失效連結」(dangling link),讀取時會出錯。 - 可以跨檔案系統、也可以指向目錄。 - 用 `ls -l` 查看時會顯示 `連結名 -> 目標路徑`。 ## 快速比較 | 特性 | 硬連結 | 軟連結 | |---|---|---| | 本質 | 同一 inode 的多個檔名 | 指向路徑的獨立小檔 | | 跨檔案系統 | ❌ 不行 | ✅ 可以 | | 可連結目錄 | ❌ 不行 | ✅ 可以 | | 原始檔案被刪除 | 資料仍在(仍有其他檔名指向) | 連結失效 | | `ls -l` 顯示 | 一般檔案 | 有 `->` 箭頭指向目標 | ## 常用範例 ```bash # 建立硬連結 ln original.txt hardlink.txt # 建立軟連結 ln -s /path/to/original.txt symlink.txt # 檢查連結資訊(含 inode 編號、連結數) ls -li # 強制覆蓋已存在的連結 ln -sf 新目標 連結名 ``` 一個記憶方式:**軟連結像 Windows 的捷徑,硬連結像同一份東西貼了兩張標籤。**