什么是 Linux 中的符號(hào)鏈接,為什么要使用它? 符號(hào)鏈接 Symbolic Links,也稱為 Symlinks 或 soft link,是一種特殊類型的文件,它就像 Windows 中的快捷方式一樣簡(jiǎn)單地指向另一個(gè)文件或目錄。創(chuàng)建符號(hào)鏈接就像創(chuàng)建一個(gè)實(shí)際文件的別名。 如果您嘗試訪問符號(hào)鏈接,您實(shí)際上訪問的是符號(hào)鏈接指向的目標(biāo)文件。對(duì)鏈接文件內(nèi)容所做的更改會(huì)更改實(shí)際目標(biāo)文件的內(nèi)容。 如果使用帶選項(xiàng) -l 的 ls 命令,符號(hào)鏈接如下所示:
lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat
在大多數(shù) Linux 發(fā)行版中,鏈接以與其余條目不同的顏色顯示,以便您可以將鏈接與常規(guī)文件和目錄區(qū)分開來。
符號(hào)鏈接提供了一種組織和共享文件的便捷方式。它們提供對(duì)長(zhǎng)而混亂的目錄路徑的快速訪問。它們?cè)?Linux 中大量用于鏈接庫(kù)。 現(xiàn)在您對(duì)符號(hào)鏈接有了一些了解,讓我們看看如何創(chuàng)建它們。
如何在 Linux 中創(chuàng)建符號(hào)鏈接
要從 link name 創(chuàng)建指向目標(biāo)文件的符號(hào)鏈接,您可以使用帶有 -s 選項(xiàng)的 ln 命令,如下所示:
ln -s target_file link_name-s 選項(xiàng)在這里很重要。判斷該鏈接為軟鏈接。如果你不使用它,它會(huì)創(chuàng)建一個(gè)硬鏈接。我將在另一篇文章中解釋軟鏈接和硬鏈接之間的區(qū)別。
如何跟蹤符號(hào)鏈接
要知道鏈接實(shí)際指向哪個(gè)真實(shí)文件,請(qǐng)使用 realpath 命令:
realpath link_name還有其他方法可以跟蹤到其源文件的軟鏈接,但 realpath 是最簡(jiǎn)單的。
如何刪除符號(hào)鏈接
Linux中沒有刪除符號(hào)鏈接的特殊命令。您可以使用與刪除文件和目錄相同的 rm 命令。
rm link_name
刪除鏈接不會(huì)刪除它鏈接到的源文件。 您也可以在一個(gè)命令中刪除多個(gè)符號(hào)鏈接:
rm link1 link2還有一個(gè)unlink 命令。但與名字給人的印象不同,unlink 命令并不是專門用來刪除鏈接的。當(dāng)然,它可以刪除文件、文件夾和鏈接。但是,它有某些限制,即使是刪除鏈接,rm 命令也是更好的選擇。 如果要使用 find 命令列出符號(hào)鏈接,可以使用該-type l選項(xiàng)。
關(guān)于符號(hào)鏈接的注意事項(xiàng)
符號(hào)鏈接有時(shí)可能會(huì)造成混淆,因此您應(yīng)該注意一些事項(xiàng)。
對(duì)鏈接所做的更改反映在原始文件中
畢竟,這就是鏈接的全部目的。您可以通過訪問鏈接來訪問目標(biāo)文件。您可以通過鏈接對(duì)目標(biāo)文件進(jìn)行更改。讓我們看例子。 我在 newdir/test_dir 中有一個(gè)文件 prog.py。它具有以下屬性:
-rw-r--r-- 1 linuxmi linuxmi 1926 2月 1日 19:08 /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py
現(xiàn)在,我將在當(dāng)前目錄中創(chuàng)建指向該文件的軟鏈接:
┌──(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
┌──(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
它鏈接到文件還是目錄?你可能不知道!
您如何知道鏈接指向的是文件還是目錄?在您按照路徑訪問目標(biāo)文件本身之前,您無法知道這一點(diǎn)。
您可以創(chuàng)建指向不存在的文件或目錄的鏈接
是的,這完全有可能。這就是為什么在 Linux 中創(chuàng)建軟鏈接時(shí)應(yīng)該小心的原因。您鏈接到的目標(biāo)文件不需要存在。創(chuàng)建指向不存在的文件/目錄的鏈接時(shí),您不會(huì)收到任何錯(cuò)誤或警告。 ls 命令仍然有效。僅當(dāng)您嘗試通過鏈接或單獨(dú)訪問目標(biāo)文件時(shí)才會(huì)出現(xiàn)錯(cuò)誤。
┌──(linuxmi?linuxmi)-[~/linuxmi] └─$ ln -s non_existant_dir link_dir ┌──(linuxmi?linuxmi)-[~/linuxmi] └─$ less link_dir link_dir: 沒有那個(gè)文件或目錄
符號(hào)鏈接是使用 777 權(quán)限創(chuàng)建的,但它沒有任何意義
您是否注意到符號(hào)鏈接上的文件權(quán)限?符號(hào)鏈接始終使用 777 權(quán)限 (rwxrwxrwx) 創(chuàng)建。對(duì)于常規(guī)文件,這意味著任何人都可以訪問該文件。但鏈接并非如此。
lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat
如果鏈接上的文件權(quán)限按原樣處理,任何用戶都可以創(chuàng)建指向安全文件的符號(hào)鏈接并自由訪問它。那將是一個(gè)主要的安全問題。值得慶幸的是,這不會(huì)發(fā)生。因?yàn)槟繕?biāo)文件的權(quán)限很重要,而不是鏈接的權(quán)限。您可以使用 chmod 命令更改鏈接的權(quán)限,但它會(huì)更改鏈接文件的權(quán)限,而不是鏈接本身。
您可以鏈接到一個(gè)鏈接的鏈接,也就是鏈?zhǔn)椒?hào)鏈接
您可以創(chuàng)建指向另一個(gè)鏈接的符號(hào)鏈接等等。這稱為鏈?zhǔn)椒?hào)鏈接。最好避免使用它們,因?yàn)樗鼤?huì)造成更多混亂。 嗯,就是這樣。我假設(shè)您現(xiàn)在對(duì)軟鏈接有了更好的了解,并且您知道如何在 Linux 中創(chuàng)建符號(hào)鏈接。您也可以查看 symlinks 命令,它可以幫助您在 Linux 中找到損壞的符號(hào)鏈接并輕松管理它們。
-
Linux
+關(guān)注
關(guān)注
87文章
11499瀏覽量
213345 -
符號(hào)
+關(guān)注
關(guān)注
0文章
55瀏覽量
4553
原文標(biāo)題:如何在 Linux 中創(chuàng)建符號(hào)鏈接 [完整指南]
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
一文弄懂Linux硬鏈接和軟鏈接
Linux系統(tǒng)中如何刪除軟鏈接
Linux驅(qū)動(dòng)中創(chuàng)建procfs接口的方法

【Linux基礎(chǔ)】Linux硬鏈接簡(jiǎn)介
【Linux基礎(chǔ)】Linux軟鏈接簡(jiǎn)介
linux下軟鏈接和硬鏈接的區(qū)別
怎樣在rt-thread目錄下創(chuàng)建多個(gè)目錄符號(hào)鏈接呢
Linux系統(tǒng)下的鏈接原理是什么?有哪些應(yīng)用呢
在RT-Thread目錄下創(chuàng)建多個(gè)目錄符號(hào)鏈接
你知道Linux軟連接和硬鏈接?
Linux中命令鏈接操作符的實(shí)際應(yīng)用
Linux中的軟鏈接、硬鏈接都用在哪些場(chǎng)合?
如何使用Linux ln命令以及如何創(chuàng)建符號(hào)鏈接
深入探討Linux系統(tǒng)中的動(dòng)態(tài)鏈接庫(kù)機(jī)制

評(píng)論