如何在 Mac 上創建和使用符號鏈接 (Symlinks)

已發表: 2023-04-14
MacBook Air M2 鍵盤和触控板
Marcus Mears III / How-To Geek
通過打開終端並使用以下命令創建符號鏈接:

ln -s /path/to/original /path/to/link

符號鏈接,也稱為符號鏈接,是指向系統其他位置的文件或目錄的特殊文件。 您可以將它們視為高級別名,以下是如何在 macOS 中使用它們。

目錄

什麼是符號鏈接?
使用 ln 命令創建符號鏈接
如何刪除符號鏈接
如何使用圖形工具創建符號鏈接

什麼是符號鏈接?

在 macOS 中,您可以在 Finder 中創建常規別名。 別名指向文件或文件夾,更像是簡單的快捷方式。

在 Finder 中“製作別名”

符號鏈接是一種更高級的別名類型,適用於系統上的每個應用程序,包括終端中的命令行實用程序。 您創建的符號鏈接在應用程序看來與其指向的原始文件或文件夾相同,即使它只是一個鏈接。

它們的工作方式很像符號鏈接在 Linux 上的工作方式,因為 macOS 和 Linux 都是類 UNIX 操作系統。 PC 用戶也可以使用符號鏈接,但 Windows 上的符號鏈接的工作方式略有不同。

假設您有一個應用程序需要將其文件存儲在 /Library/App 中,而您希望將其存儲在系統中的其他位置,例如 /Volumes/App。 您可以將 App 目錄移動到 /Volumes/App,然後在 /Library/App 中創建指向 /Volumes/App 的符號鏈接。 該程序將嘗試訪問其位於 /Library/App 的文件夾,操作系統會將其重定向至 /Volumes/App。

使困惑? 讓我們看一個真實世界的例子。 假設您有許多 Steam 遊戲佔用了主 Mac 分區上的空間,而您想將其存儲在外部驅動器上。 默認情況下,這些文件恰好存儲在“/Users/chris/Library/Application Support/Steam/steamapps”。 首先,將“steamapps”目錄移動到名為“Data”的外部驅動器,其路徑名為“/Volumes/Data”。

要完成此過程,請在“/Users/tim/Library/Application Support/Steam/”目錄中創建指向文件新位置(即“/Volumes/Data/steamapps”)的符號鏈接。 對於 Steam 和任何其他進程,符號鏈接看起來就像一個普通文件夾,就好像原始文件從未移動過一樣。 實際上,這些文件存儲在其他地方,符號鏈接是一個非常有說服力的路標。

這對 macOS 操作系統和您使用的應用程序是完全透明的。 它允許您為了方便而四處移動文件,如果您的內部驅動器上的可用空間有限,則特別方便。 您可以四處移動您的符號鏈接,它將指向原始文件。

除了有時稱為“軟鏈接”的符號鏈接外,您還可以創建“硬鏈接”。 符號鏈接或軟鏈接指向文件系統中的路徑。 例如,假設您有一個從 /Users/example 指向 /opt/example 的符號鏈接或軟鏈接。 如果您移動 /opt/example 中的文件,則 /Users/example 中的鏈接將被破壞。 但是,如果您創建一個硬鏈接,它實際上會指向文件系統上的底層 inode。 因此,如果您創建了一個從 /Users/example 指向 /opt/example 的硬鏈接,然後移動了 /opt/example,則 /Users/example 處的鏈接仍將指向該文件,無論您將它移動到哪裡。 硬鏈接在較低級別工作。

如果不確定要使用什麼,通常應使用標準符號鏈接(軟鏈接)。 硬鏈接有一些限制。 例如,您不能在一個分區或磁盤上創建指向另一個分區或磁盤上某個位置的硬鏈接,而您可以使用標準符號鏈接來做到這一點。

使用 ln 命令創建符號鏈接

要在 Mac 上創建符號鏈接,您需要使用終端應用程序。

按 Command+Space,鍵入“Terminal”,然後按“Enter”從 Spotlight 搜索中打開 Terminal。 導航到 Finder > Applications > Utilities > Terminal 以啟動終端。

使用 macOS Spotlight 啟動終端

按以下形式運行ln命令。 您可以指定目錄或文件的路徑:

 ln -s /path/to/original /path/to/link

這裡的-s告訴 ln 命令創建一個符號鏈接。 如果你想創建一個硬鏈接,你會省略-s 。 大多數時候,符號鏈接是更好的選擇,所以除非有特殊原因,否則不要創建硬鏈接。

這是一個例子。 假設您想在桌面文件夾中創建一個指向您的下載文件夾的符號鏈接。 您將運行以下命令:

 ln -s /Users/name/Downloads /Users/name/Desktop 

在 macOS 終端中創建符號鏈接

創建鏈接後,您會看到“下載”文件夾出現在桌面上。 它實際上是您創建的符號鏈接,但它看起來像真實的東西。 此文件夾似乎包含與您的“下載”文件夾相同的所有文件。 那是因為它確實如此——它們只是指向文件系統上相同底層目錄的不同視圖。

桌面文件夾中下載的符號鏈接

如果您的文件路徑包含空格或其他特殊字符,您需要將其括在引號中。 因此,如果您想在桌面上創建指向用戶目錄中名為“My Files”的文件夾的鏈接,則需要類似以下命令的內容:

 ln -s "/Users/name/My Files" "/Users/name/Desktop/My Link"

為了簡化在終端中輸入文件和目錄路徑,您可以將文件夾從 Finder 窗口拖放到終端中。 終端將自動填寫該文件夾的路徑。 如有必要,它也會將路徑括在引號中。

創建帶空格的符號鏈接

如果您需要在您的用戶帳戶無權訪問的系統位置創建符號鏈接,您需要在ln命令前加上sudo命令,如下所示:

 sudo ln -s /path/to/original /path/to/link

請記住,在現代版本的 macOS 上,由於系統完整性保護,如果不更改低級固件選項,您將無法寫入某些系統位置。 您可以禁用該功能,但我們建議您不要這樣做。

使用 sudo 命令創建符號鏈接

相關:如何在 Mac 上禁用系統完整性保護(以及為什麼不應該)

如何刪除符號鏈接

您可以像刪除任何其他類型的文件一樣刪除符號鏈接。 例如,要刪除 Finder 中的符號鏈接,請右鍵單擊它(或使用 Control+單擊)並從上下文菜單中選擇“移至廢紙簍”。

使用 Finder 刪除符號鏈接

您可以使用rm命令從命令行刪除鏈接,這與您用來刪除其他文件的命令相同。 運行命令並指定要刪除的鏈接的路徑:

 rm /路徑/到/鏈接

使用終端刪除符號鏈接

如何使用圖形工具創建符號鏈接

Finder 可以創建別名,但它們不會像符號鏈接那樣工作。 別名就像 Windows 上的桌面快捷方式。 它們不被視為真實、透明的符號鏈接。

要在 Finder 中創建符號鏈接,您需要第三方實用程序或腳本。 我們推薦使用開源應用程序 SymbolicLinker,以便快速向右鍵單擊(按住 Control 單擊)Finder 上下文菜單添加選項。

下載 .DMG 文件並打開它。 在 Finder 中,單擊“前往”>“前往文件夾”並輸入“~/Library/Services”,這會將您帶到用戶名的“服務”文件夾。 將“SymbolicLinker.service”文件拖到這個文件夾中。

將 SymbolicLinker.service 添加到您的服務文件夾

雙擊該服務以運行它,然後單擊“打開”以確認您願意運行它。

第一次打開SymbolicLinker.service

現在,您將在右鍵單擊(Control+單擊)服務菜單下找到“製作符號鏈接”選項。

使用“服務”菜單“製作符號鏈接”

現在將符號鏈接移動到任何你想要的地方,它總是會指向原來的文件夾。


如果您以前沒有使用過它們,符號鏈接可能需要一些時間來讓您全神貫注。 一旦你這樣做了,你會發現它們是一個強大的工具,可以做一些你通常不能用常規別名做的事情。

macOS 包含可提高工作效率、加快工作流程並為您使用計算機的方式提供更大靈活性的功能。 如果您覺得本教程有用,請確保您使用 Automator 和 Shortcuts 工作流程來調整圖像大小,了解基本的 macOS 終端命令,並通過一些簡單的技巧提高 Mac 的工作效率。

您甚至可以使用 Homebrew 通過終端安裝 macOS 軟件。