Linux 沒有快捷方式,但它有符號鏈接——或通常所說的符號鏈接。但是符號鏈接到底是什麼?你如何創造一個?讓我們找出答案。
我們將在 Ubuntu 安裝上試用這些命令,儘管語法在所有 Linux 發行版上都相同。有趣的是,符號鏈接也可以在蘋果電腦。
目錄
什麼是符號鏈接?
如果您希望能夠從多個位置訪問一個文件,簡單地複制它並不是一個好的解決方案。您正在浪費磁盤空間,更不用說由於存在多個文件而難以跟踪更改。
在 GUI 中基於操作系統的操作系統,你可以通過創建快捷方式來克服這個問題。對於基於 CUI 的操作系統(如任何 Linux 發行版),答案是符號鏈接。在某些情況下,甚至 Microsoft Windows 也可以利用符號鏈接。
符號鏈接或符號鏈接只是指向另一個文件或目錄的文件——即使在完全不同的文件系統或分區中。打開符號鏈接可以訪問同一個原始文件,任何更改也會反映在主文件中。
這也適用於權限——使用 chmod 更改符號鏈接文件的權限實際上會修改目標文件的權限。
符號鏈接的類型
符號鏈接也稱為軟鏈接。顧名思義,它不是 Linux 上唯一的文件鏈接系統類型。在某些情況下,硬鏈接可以用作符號鏈接的替代方法,但有許多限制。
首先,很難鏈接只是指向同一個 inode 的文件名。雖然這使得它們在存儲和訪問速度方面非常高效,但也將它們限制為同一文件系統或分區中的文件。由於 Linux 中文件夾訪問方式的一個怪癖,您也不能對目錄使用硬鏈接。
另一方面,軟鏈接或符號鏈接更像是桌面快捷方式。每個軟鏈接本質上是一個指向原始數據的小文件,實際上並沒有直接鏈接到它。這意味著軟鏈接可以很容易地指向其他分區和文件系統上的文件和目錄,也沒有任何限制。
硬鏈接與軟鏈接——使用哪種類型?
軟鏈接是最通用的鏈接形式,因為它們可以不受任何限制地用於跨多個文件系統的文件和目錄。但是為什麼我們還要有硬鏈接呢?與符號鏈接相比,它們是否為您提供任何優勢?
好吧,理論上,硬鏈接更有效。因為它們使用相同的 inode,所以它們不會佔用額外的磁盤空間,並且訪問速度比軟鏈接快得多。這就是為什麼許多系統管理員會建議盡可能使用硬鏈接的原因。
話雖這麼說,但使用符號鏈接的缺點很小。現代計算機尤其不關心幾 KB 的額外存儲空間,除非您用數百萬個軟鏈接填充系統,否則額外的文件大小幾乎無關緊要。
創建符號鏈接
符號鏈接——或者更確切地說,一般的文件鏈接——是使用 ln 命令創建的。默認情況下,該命令創建硬鏈接。要創建符號鏈接,您需要將-s 標誌附加到 ln 命令。
語法很簡單。 ln 命令有兩個參數——要鏈接的文件(或文件夾)的路徑,以及要創建的鏈接文件的路徑。
像這樣:
ln-s user_names.txt names
這將創建一個名為 names 的符號鏈接,連接到 user_names 文本文件.要查看符號鏈接是否實際創建,只需使用 ls 命令。
如您所見,Ubuntu 為不同類別的文件顯示不同的顏色,目錄用深藍色表示,符號鏈接用淺藍色(實際上是青色)表示。
我們也可以使用相同的語法為文件夾創建符號鏈接:
ln-s examples example_folder
用於創建符號鏈接到其他目錄中的文件和文件夾,只需使用它們的完整路徑。例如:
ln-s examples/example3.txt distant_example
符號鏈接的局限性
符號鏈接是一種很好的連接方式在您的系統中共享文件而不必求助於製作副本,但它們有其自身的局限性。是的,儘管軟鏈接比硬鏈接限制更少,但仍有一些事項需要牢記。
首先,ln 命令實際上並不驗證創建的鏈接。這意味著可以輸入一個實際上不存在的文件名,並且不會出現任何錯誤。確認鏈接的唯一方法是嘗試使用它並查看它是否指向正確的文件。
其次,雖然訪問或更改符號鏈接的權限會更改原始文件的屬性,但文件刪除不會發生同樣的情況。您可以安全地刪除符號鏈接而不影響鏈接的文件或目錄。
在 Linux 中創建符號鏈接
使用終端創建符號鏈接的最大痛苦是難以訪問分佈在各個目錄中的重要文件。明智的解決方案是從您的主目錄本身創建指向此類文件的符號鏈接,例如桌面快捷方式。
與硬鏈接不同,符號鏈接可以很容易地創建,沒有任何限制,甚至可以連接到不同分區和文件系統中的目錄或文件。請記住,這也意味著符號鏈接可能指向一個不存在的文件——您將必須嘗試訪問該鏈接以驗證該文件是否存在。