符號鏈接,也稱為軟鏈接或 Symlinks,是一種特殊的文件類型。它類似於 Windows 中的快捷方式,指向另一個檔案或目錄。建立符號連結相當於為實際檔案建立別名。
當您造訪符號連結時,您實際上造訪的是符號連結所指向的目標檔案。連結文件內容所做的變更會影響實際目標文件的內容。
使用帶有 -l 選項的 ls 指令可以顯示符號連結。它們如下所示:
lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat
符號連結提供了一種組織和共享文件的便捷方式。它們提供對長而混亂的目錄路徑的快速存取。它們在 Linux 中大量用於連結庫。
現在您對符號連結有了一些了解,讓我們看看如何建立它們。
要從 link name 建立指向目標檔案的符號鏈接,您可以使用帶有 -s 選項的 ln 命令,如下所示:
ln -s target_file link_name
-s 選項在這裡很重要。判斷該連結為軟連結。如果你不使用它,它會創建一個硬連結。我將在另一篇文章中解釋軟連結和硬連結之間的差異。
#要知道連結實際指向哪個真實文件,請使用 realpath 指令:
realpath link_name
還有其他方法可以追蹤到其來源檔案的軟鏈接,但 realpath 是最簡單的。
#Linux中沒有刪除符號連結的特殊指令。您可以使用與刪除檔案和目錄相同的 rm 命令。
rm link_name
刪除連結不會刪除它連結到的來源檔案。
您也可以在一個指令中刪除多個符號連結:
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
以下是新创建链接的属性:
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: 没有那个文件或目录
您是否注意到符号链接上的文件权限?符号链接始终使用 777 权限 (rwxrwxrwx) 创建。对于常规文件,这意味着任何人都可以访问该文件。但链接并非如此。
lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat 如果链接上的文件权限按原样处理,任何用户都可以创建指向安全文件的符号链接并自由访问它。那将是一个主要的安全问题。值得庆幸的是,这不会发生。因为目标文件的权限很重要,而不是链接的权限。
您可以使用 chmod 命令更改链接的权限,但它会更改链接文件的权限,而不是链接本身。
您可以创建指向另一个链接的符号链接等等。这称为链式符号链接。最好避免使用它们,因为它会造成更多混乱。
嗯,就是这样。我假设您现在对软链接有了更好的了解,并且您知道如何在 Linux 中创建符号链接。您也可以查看 symlinks 命令,它可以帮助您在 Linux 中找到损坏的符号链接并轻松管理它们。
以上是如何在 Linux 中建立符號連結 [完整指南]的詳細內容。更多資訊請關注PHP中文網其他相關文章!