什么是 Linux 中的符號鏈接,為什么要使用它? 符號鏈接 Symbolic Links,也稱為 Symlinks 或 soft link,是一種特殊類型的文件,它就像 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中沒有刪除符號鏈接的特殊命令。您可以使用與刪除文件和目錄相同的 rm 命令。
rm link_name
刪除鏈接不會刪除它鏈接到的源文件。 您也可以在一個命令中刪除多個符號鏈接:
rm link1 link2還有一個unlink 命令。但與名字給人的印象不同,unlink 命令并不是專門用來刪除鏈接的。當然,它可以刪除文件、文件夾和鏈接。但是,它有某些限制,即使是刪除鏈接,rm 命令也是更好的選擇。 如果要使用 find 命令列出符號鏈接,可以使用該-type l選項。
關于符號鏈接的注意事項
符號鏈接有時可能會造成混淆,因此您應該注意一些事項。
對鏈接所做的更改反映在原始文件中
畢竟,這就是鏈接的全部目的。您可以通過訪問鏈接來訪問目標文件。您可以通過鏈接對目標文件進行更改。讓我們看例子。 我在 newdir/test_dir 中有一個文件 prog.py。它具有以下屬性:
-rw-r--r-- 1 linuxmi linuxmi 1926 2月 1日 19:08 /home/linuxmi/linuxmi.com/linuxmi/linuxmi.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 權限創建的,但它沒有任何意義
您是否注意到符號鏈接上的文件權限?符號鏈接始終使用 777 權限 (rwxrwxrwx) 創建。對于常規文件,這意味著任何人都可以訪問該文件。但鏈接并非如此。
lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat
如果鏈接上的文件權限按原樣處理,任何用戶都可以創建指向安全文件的符號鏈接并自由訪問它。那將是一個主要的安全問題。值得慶幸的是,這不會發生。因為目標文件的權限很重要,而不是鏈接的權限。您可以使用 chmod 命令更改鏈接的權限,但它會更改鏈接文件的權限,而不是鏈接本身。
您可以鏈接到一個鏈接的鏈接,也就是鏈式符號鏈接
您可以創建指向另一個鏈接的符號鏈接等等。這稱為鏈式符號鏈接。最好避免使用它們,因為它會造成更多混亂。 嗯,就是這樣。我假設您現在對軟鏈接有了更好的了解,并且您知道如何在 Linux 中創建符號鏈接。您也可以查看 symlinks 命令,它可以幫助您在 Linux 中找到損壞的符號鏈接并輕松管理它們。
-
Linux
+關注
關注
87文章
11229瀏覽量
208926 -
符號
+關注
關注
0文章
55瀏覽量
4315
原文標題:如何在 Linux 中創建符號鏈接 [完整指南]
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論