首頁 >系統教程 >Linux >如何在 Linux 中建立符號連結 [完整指南]

如何在 Linux 中建立符號連結 [完整指南]

WBOY
WBOY轉載
2024-02-09 14:21:231065瀏覽

符號鏈接,也稱為軟鏈接或 Symlinks,是一種特殊的文件類型。它類似於 Windows 中的快捷方式,指向另一個檔案或目錄。建立符號連結相當於為實際檔案建立別名。

當您造訪符號連結時,您實際上造訪的是符號連結所指向的目標檔案。連結文件內容所做的變更會影響實際目標文件的內容。

使用帶有 -l 選項的 ls 指令可以顯示符號連結。它們如下所示:

lrwxrwxrwx 1 linuxmi linuxmi     11  2月 1日 18:58 linuxmi.md -> linuxmi.dat
如何在 Linux 中创建符号链接 [完整指南]

符號連結提供了一種組織和共享文件的便捷方式。它們提供對長而混亂的目錄路徑的快速存取。它們在 Linux 中大量用於連結庫。

現在您對符號連結有了一些了解,讓我們看看如何建立它們。

如何在 Linux 中建立符號連結

要從 link name 建立指向目標檔案的符號鏈接,您可以使用帶有 -s 選項的 ln 命令,如下所示:

ln -s target_file link_name

-s 選項在這裡很重要。判斷該連結為軟連結。如果你不使用它,它會創建一個硬連結。我將在另一篇文章中解釋軟連結和硬連結之間的差異。

如何追蹤符號連結

#要知道連結實際指向哪個真實文件,請使用 realpath 指令:

realpath link_name

還有其他方法可以追蹤到其來源檔案的軟鏈接,但 realpath 是最簡單的。

如何在 Linux 中创建符号链接 [完整指南]

如何刪除符號連結

#Linux中沒有刪除符號連結的特殊指令。您可以使用與刪除檔案和目錄相同的 rm 命令。

rm link_name
如何在 Linux 中创建符号链接 [完整指南]

刪除連結不會刪除它連結到的來源檔案。

您也可以在一個指令中刪除多個符號連結:

rm link1 link2

還有一個unlink 指令。但與名字給人的印像不同,unlink 指令並不是專門用來刪除連結的。當然,它可以刪除檔案、資料夾和連結。但是,它有某些限制,即使是刪除鏈接,rm 命令也是更好的選擇。

💡如果要使用 find 指令列出符號鏈接,可以使用該*-type l選項。 *

關於符號連結的注意事項

#符號連結有時可能會造成混淆,因此您應該注意一些事項。

對連結所做的變更反映在原始檔案中

畢竟,這就是連結的全部目的。您可以透過造訪連結來存取目標檔案。您可以透過連結對目標檔案進行更改。讓我們來看例子。

我在 newdir/test_dir 中有一個檔案 prog.py。它具有以下屬性:

┌──(linuxmi㉿linuxmi)-[~]
└─$ ln -s /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py test
如何在 Linux 中创建符号链接 [完整指南]

以下是新创建链接的属性:

lrwxrwxrwx 1 linuxmi linuxmi     44  2月 1日 19:24 test -> /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py

注意到行首的 l(是 L,不是一 1)了吗?如果你熟悉 Linux 中的文件权限,你就会知道’l’表示链接,因此它告诉你这个文件实际上是一个链接。提个醒,- 表示文件,d 表示目录。

现在,如果我使用此链接更改内容或属性,同样会反映在目标文件中。例如,我在软链接上使用 touch 命令,你会注意到它改变了目标文件的时间戳。

┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ touch test
                                                                           
┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ ls -l /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py
-rw-r--r-- 1 linuxmi linuxmi 1926  2月 1日 19:27 /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py

它链接到文件还是目录?你可能不知道!

您如何知道链接指向的是文件还是目录?在您按照路径访问目标文件本身之前,您无法知道这一点。

您可以创建指向不存在的文件或目录的链接

是的,这完全有可能。这就是为什么在 Linux 中创建软链接时应该小心的原因。您链接到的目标文件不需要存在。创建指向不存在的文件/目录的链接时,您不会收到任何错误或警告。

ls 命令仍然有效。仅当您尝试通过链接或单独访问目标文件时才会出现错误。

┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ ln -s non_existant_dir link_dir
                                                                           
┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ less link_dir
link_dir: 没有那个文件或目录
如何在 Linux 中创建符号链接 [完整指南]

符号链接是使用 777 权限创建的,但它没有任何意义

您是否注意到符号链接上的文件权限?符号链接始终使用 777 权限 (rwxrwxrwx) 创建。对于常规文件,这意味着任何人都可以访问该文件。但链接并非如此。

lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat
如果链接上的文件权限按原样处理,任何用户都可以创建指向安全文件的符号链接并自由访问它。那将是一个主要的安全问题。值得庆幸的是,这不会发生。因为目标文件的权限很重要,而不是链接的权限。

您可以使用 chmod 命令更改链接的权限,但它会更改链接文件的权限,而不是链接本身。

您可以链接到一个链接的链接,也就是链式符号链接

您可以创建指向另一个链接的符号链接等等。这称为链式符号链接。最好避免使用它们,因为它会造成更多混乱。

嗯,就是这样。我假设您现在对软链接有了更好的了解,并且您知道如何在 Linux 中创建符号链接。您也可以查看 symlinks 命令,它可以帮助您在 Linux 中找到损坏的符号链接并轻松管理它们。

以上是如何在 Linux 中建立符號連結 [完整指南]的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lxlinux.net。如有侵權,請聯絡admin@php.cn刪除