如何在 Linux 中使用 Ln 命令創建符號鏈接

符號鏈接通常被稱為 軟鏈接 或者 符號鏈接,這是一種特殊類型的文件,它引用另一個文件或目錄。

在本指南中,您將學習如何在 Linux 中使用 ln 命令創建符號鏈接以在文件之間建立鏈接。

鏈接類型

在 Linux 中,我們有兩種類型的鏈接:軟鏈接和硬鏈接。

硬鏈接: 硬鏈接是原始文件的副本。 它允許訪問目標文件中的數據。 用戶不能為目錄創建硬鏈接,只能為文件創建硬鏈接。 此外,硬鏈接文件有一個共同的 inode 編號。 當原始文件被刪除或移除時,硬鏈接將繼續工作並包含已移除文件的內容。 同樣重要的是要注意硬鏈接不會跨越不同的文件系統。

軟鏈接: 與硬鏈接不同,軟鏈接只是一個指向文件名的指針,不包含另一個文件或被引用的目標文件的內容。 如果目標文件被移除或刪除,軟鏈接將不復存在。 軟鏈接的好處在於它們可用於鏈接到文件或目錄,並且它們可以跨越不同的文件系統。

ln命令的使用方法

ln 命令用於在文件之間建立鏈接。 默認情況下,該命令會創建硬鏈接。 要創建軟鏈接,只需附加 -s 選項 ( –象徵性的)。

句法:

ln [OPTION] TARGET LINK_NAME

為避免混淆,請在創建符號鏈接時使用源文件和目標文件的絕對路徑(相對路徑)。

如何創建文件的符號鏈接

要創建指向文件的符號鏈接,請運行以下命令:

$ ln -s { OPTIONS } file symlink

當文件和符號鏈接都被定義時,ln 命令從 文件 這是在第二個參數中定義的文件的第一個參數 符號鏈接.

為了 example, 要創建指向文件的符號鏈接,請使用以下語法,

$ ln -s original_file symlink

注意:ln 成功時不返回任何輸出。

在命令中,替換 原始文件 使用要為其創建符號鏈接的現有文件和 符號鏈接 帶有符號鏈接。

讓我們來一場真正的 example:

$ ln -s file1.txt sample_link.txt

上面的命令創建一個名為“sample_link.txt”的符號鏈接到當前目錄中的現有文件“file1.txt”。

要驗證鏈接的創建,只需使用 ls 命令,如下所示:

$ ls -l sample_link.txt

您的輸出應該類似於我在下面的內容:

lrwxrwxrwx 1 winnie winnie 9 Jul 12 23:43 sample_link.txt -> file1.txt

在權限中, l flag 表示這是一個符號鏈接,字符 - > 表示符號鏈接指向文件 file1.txt.

有時符號鏈接由於路徑問題而不起作用,建議使用完整路徑:

# absolute (full path)
ln -s /path/to/originals/originalfile1.txt backup/copy.txt

# relative
cd backup
ln -s ../originals/originalfile1.txt copy.txt

如何創建指向目錄的符號鏈接

創建指向目錄的符號鏈接就像創建指向文件的符號鏈接一樣簡單。 語法基本保持不變。 第一個參數採用目錄的名稱,而符號鏈接指定為第二個參數。

下面的語法是 example 你會怎麼做:

$ ln -s /path/to/directory ~/directory

為了 example, 從目錄創建符號鏈接 /下載/音樂/~/my_music 運行命令:

$ ln -s /Downloads/music ~/my_music

如何覆蓋符號鏈接

通過簡單地調用來覆蓋符號鏈接 輸入命令 沒有任何額外的參數總是會給你一個錯誤,如下所示:

為了 example, 如果您再次嘗試運行以下命令:

$ ln -s file1.txt sample_link.txt

您將收到顯示的錯誤:

ln: failed to create symbolic link 'sample_link.txt': File exists

此問題的解決方法是引入另一個選項 -F 或者 – 力量 覆蓋符號鏈接的目標路徑,如下所示:

$ ln -sf file1.txt sample_link.txt

這一次,覆蓋軟鏈接不會產生任何錯誤。

如何刪除符號鏈接

要擺脫 Linux 或符號鏈接的符號鏈接,您可以使用 rm 命令或 取消鏈接 命令。 這很容易。 為了 取消鏈接 命令,使用以下語法刪除符號鏈接:

$ unlink symlink_to_be_removed

使用 rm 命令刪除軟鏈接與刪除或刪除常規文件時相同:

$ rm symlink_to_be_removed

符號鏈接重要嗎?

如果您想實現以下任一目的,通常最好為文件創建符號鏈接:

  1. 可以從多個位置訪問一個或多個文件,而無需創建重複的副本,這必然會佔用大量磁盤空間。
  2. 如果要保留文件的原始版本並確保鏈接指向文件的最新版本。 這是有效的,因為即使您將文件替換為具有相同文件名的其他文件,符號鏈接仍將保持活動狀態。

Linux 程序使用符號鏈接作為別名,這樣用戶就不必知道使用的是哪個版本的代碼。

# which python
/usr/bin/python
# ls -l /usr/bin/python
lrwxrwxrwx. 1 root root 7 Feb 21 13:38 /usr/bin/python -> python2

結論

符號鏈接和標準快捷方式相似,但兩者之間存在一些差異。

標準快捷方式,就像您在 Windows 中找到的快捷方式一樣,只是一個指向特定目錄、文件或應用程序的常規文件。 此快捷方式通常顯示為可以在任何位置創建的圖標,單擊它會打開原始文件、目錄或應用程序。

符號鏈接實際上代表了功能意義上的原始文件。 它是文件等對象的直接替代品。 您的 Linux 系統讀取 Linux 符號鏈接,就好像它是目標對像一樣。 一個普通的快捷方式只是引用一個文件或一個目錄,而不做任何其他事情。

這就是如何在 Linux 中創建符號鏈接的全部內容,有關更多信息,請參閱 . 希望您喜歡閱讀,請留下您的意見和建議。