Linux系列之鏈接

  • 2022 年 8 月 13 日
  • 筆記

前言

在類Unix系統中,一個文件有可能被多個名字引用。我們使用鏈接來實現這一點,鏈接共有兩種類型:硬鏈接和軟鏈接,本文分別來介紹它們。

硬鏈接

硬鏈接也允許指向文件,但與符號鏈接的方式不同。它們是Unix創建鏈接的原始方式。默認情況下,每個文件都有一個單獨的硬鏈接,該鏈接給出了文件的名稱,當我們創建一個硬鏈接時,我們是為一個文件創建一個額外的目錄條目。其中有兩個限制:

  • 硬鏈接不能引用自己文件系統以外的文件。它所引用的文件必須在同一磁碟分區上。
  • 硬鏈接不能引用目錄。

硬鏈接與文件本身是沒有區別的。我在下面列出了一個包含硬鏈接和符號鏈接的目錄,我們可以看到,硬鏈接沒有特殊的指示,表明它是一個硬鏈接,而符號鏈接則有明顯的指示(許可權中的l和顯示它鏈接到什麼的->)。

image.png

當硬鏈接被刪除時,鏈接是被刪除了,但是文件本身的內容卻仍舊存在,直到刪除所有指向該文件的鏈接。你可能會時不時地碰到這種情況,但現代化的實踐更傾向於符號鏈接。

我們可以使用下面的命令來創建硬鏈接:

ln file link

符號鏈接

符號鏈接是一種特殊類型的文件。它們也被稱為軟鏈接或符號鏈接,它們被用來指向任意電腦上的任何文件或目錄,類似於Windows中的快捷方式和Mac OS中的別名。

我們可以使用下面的命令來創建符號鏈接:

ln -s item link

item既可以是文件,也可以是目錄。

符號鏈接克服了硬鏈接的局限性,因為它們通過創建一種特殊類型的文件來工作,其中包含一個指向被引用文件或目錄的文本指針。

如果你向符號鏈接寫東西,被引用的文件就會被寫入,當你刪除符號鏈接時,只有鏈接會被刪除而文件本身不會被刪除。如果文件被刪除,該鏈接將繼續存在,但將不指向任何東西,並被稱為中斷。