Linux 系統中,ln 指令是一個強大且常用的工具,用於建立連結檔(links)。連結檔可以讓你在不複製原始檔案的情況下,創建檔案的參考或快捷方式,這對於節省磁碟空間和簡化文件管理非常有用。本篇文章將帶你深入了解 ln 指令,包括基本語法和實際範例。




Linux 系統中,ln 指令是一個強大且常用的工具,用於建立連結檔(links)。連結檔可以讓你在不複製原始檔案的情況下,創建檔案的參考或快捷方式,這對於節省磁碟空間和簡化文件管理非常有用。本篇文章將帶你深入了解 ln 指令,包括基本語法和實際範例。

什麼是連結檔?

連結檔(links)是一種特殊的檔案,它們指向另一個檔案或目錄。在 Linux 中,有兩種主要類型的連結檔:硬連結和符號連結(也稱為軟連結或符號連接)。硬連結直接指向磁碟上的相同數據塊,而符號連結則包含指向目標檔案或目錄的路徑。

使用 ln 指令的基本語法

以下是 ln 指令的基本語法:

ln [選項] [目標] [連結檔]
  • 選項:可以是一些附加的選項,用來調整連結檔的行為。
  • 目標:指定原始檔案或目錄的路徑。
  • 連結檔:指定連結檔的名稱和路徑。

常用參數說明

  1. -s 參數(軟連結;符號連結):這個參數用於創建軟連結(符號連結),而不是硬連結。符號連結是一個指向原始檔案或目錄的路徑的特殊檔案。
  2. -i 參數(互動模式):啟用互動模式,當要覆蓋現有的目標檔案時,會提示使用者確認操作。
  3. -b 參數(備份):當使用 -s 參數創建符號連結時,可以使用此參數備份原始檔案。備份的檔案會以 ~ 結尾。
  4. -f 參數(強制):強制創建連結,即使目標檔案已經存在。這會覆蓋現有的目標檔案。

創建硬連結

硬連結是將一個以上的檔案名稱指向相同的 inode(檔案或目錄的唯一識別號)。這意味著硬連結之間的檔案內容和屬性都是相同的。下面是一個創建硬連結的範例:

ln file1.txt link_to_file1.txt

這將創建一個名為 link_to_file1.txt 的硬連結,它指向與 file1.txt 相同的內容。

創建軟連結 (符號連結) -s

這個參數用於創建符號連結,而不是硬連結。符號連結是一個指向原始檔案或目錄的路徑的特殊檔案。

ln -s file2.txt link_to_file2.txt

創建一個符號連結到檔案 file2.txt

強制覆蓋舊檔 -f

在預設的狀況下,如果指定的目標連結檔案已經存在的話,ln 在建立連結檔案時就會出現錯誤:

#ln -s test3.txt link_to_file3.txt
ln: failed to create symbolic link 'link_to_file3.txt': 檔案已存在

若要強制覆蓋舊檔,可以加上 -f 參數:

# 強制覆蓋舊檔 
ln -f -s test.txt link_to_file3.txt

自動備份舊檔 -b

當使用 -s 參數創建符號連結時,可以使用此參數備份原始檔案。備份的檔案會以 ~ 結尾,例如,file1.txt 的備份會命名為 file1.txt~

ln -b -s test.txt link_to_file4.txt

硬連結和軟連結(符號連結)的主要區別?

  1. 指向方式:
    • 硬連結:硬連結是多個檔案名稱指向相同的inode(索引節點)。這意味著硬連結的不同名稱實際上都是相同的檔案,它們共享相同的內容和屬性。當你刪除其中一個硬連結,其他連結仍然存在,直到所有硬連結都被刪除才釋放空間。
    • 軟連結(符號連結):符號連結是一個指向原始檔案或目錄路徑的特殊檔案。它們僅包含指向目標的路徑信息,不共享inode。如果原始檔案或目錄被刪除或移動,符號連結將失效,稱為”斷連結”。
  2. 跨檔案系統:
    • 硬連結:硬連結只能在同一個檔案系統中創建,因為它們共享相同的inode,而inode是特定於檔案系統的。無法跨越不同的檔案系統創建硬連結。
    • 符號連結:符號連結可以跨越不同的檔案系統創建,因為它們僅包含路徑信息,而不關心inode。
  3. 應用場景:
    • 硬連結:硬連結通常用於在不同位置引用相同的檔案,以節省磁碟空間,或者用於保護重要檔案免受誤刪除的風險。當一個檔案有多個硬連結時,只有當所有硬連結都被刪除後,該檔案的磁碟空間才會被釋放。
    • 符號連結:符號連結常用於創建快捷方式或引用不同目錄中的檔案。它們是靈活的,允許你輕鬆地創建連接到其他位置的檔案或目錄。

總結來說,硬連結和符號連結都是在文件系統中建立檔案連結的方法,但它們的工作方式和使用場景有所不同。硬連結共享相同的inode,而符號連結只是指向目標的路徑。這使得它們適用於不同的用途和需求。

延伸閱讀:什麼是 Linux lsof ? 5分鐘學會管理行程和檔案的用法教學與範例

延伸閱讀:什麼是 Linux I/O 標準輸入輸出和管線 ? 超詳細範例說明與教學





主頁 » LINUX » 實用技巧 » Linux 系統的連結檔 links 是什麼意思?5分鐘搞清楚硬連結軟連結學會 Linux ln 指令與教學

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *