如何在 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 软件。