macOS上的符号链接Symlink是什么,以及该怎么使用

本文介绍了macOS中的符号链接(Symlinks)概念,它是一种指向系统上其他文件或目录的特殊文件,类似于高级别别名。文章详细说明了如何在Terminal中使用`ln`命令创建和删除符号链接,并提到了图形化工具创建符号链接的方法。在macOS上,符号链接在所有应用内都有效,包括Terminal,提供了一种灵活的文件和目录组织方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近开始使用MacBook工作,在安装git的时候得到了可以把"symlink"放在桌面的提示,就想看一下什么是symlink,发现中文的文档基本都是机翻和转帖,翻译的也是驴唇不对马嘴的,我就找到这篇文章并翻译了一下,希望能给想了解symlink的同学省点自己找的时间。

macOS上的符号链接Symlink是什么,以及该怎么使用

符号链接(Symbolic links),也被称为Symlinks,是一类特殊的文件,指向系统上的其他文件或者目录,可以认为是macOS上的一种比较先进的别名(aliase)。

符号链接和别名很相像,除了符号链接可以在每个应用内生效——包括Terminal。当用普通的别名无法使预期的功能生效时,符号链接可能会很有用。在macOS上,用户无法在访达(Finder)中创建符号链接,但是可以在Terminal中使用 ln 命令来创建。

macOS上的符号链接的工作方式和在Linux上很像,因为这两个都是类unix操作系统(Unix-like),在windows上符号链接工作的方式有些不一样。


什么是符号链接(Symbolic Links)?

在macOS中,我们可以通过Finder创建普通的别名(aliase),别名会指向文件或目录,但是起到的作用只是一个简单的快捷方式。

符号链接是一种能作用在系统中的每个应用上的更高级的别名类型,甚至包括Terminal中的命令行工具。一个指向app的符号链接和原始app文件或目录是等价的——即使它实际上只是一个链接。

举个例子,假设你有一个程序,这个程序需要将它的文件存储于/Library/Program目录,但是你想把这些文件存储在系统中的其他位置——比如说,想放在/Volumes/Program目录下。这时,你就可以将Program整个目录移动到/Volumes/Program这个位置,然后在/Library/Program创建一个符号链接,指向/Volumes/Program。程序会尝试访问/Library/Program,然后操作系统就会将访问重定向到/Volumes/Program。

这个操作(操作系统的重定向)对于macOS和用户使用的应用程序来说是完全透明的。 如果在Finder或任何其他程序中访问/Library/Program目录,会显示实际上在/Volumes/Program目录中的内容。

除了又被称为“软链接(soft links)”的符号链接,用户也可以创建“硬链接(hard links)”。符号链接,或者说软链接,指向的是文件系统中的路径。 举例来说,假设有一个符号链接(软链接)从/Users/example指向/opt/example,如果将/opt/example中的文件移走,/Users/example上的软链接就会损坏。但是,如果用户创建的是硬链接,这个硬链接实际上指向的是文件系统底层的inode节点。在使用硬链接的情况下,无论怎么移动/opt/example,链接还是会指向实际的文件。相对软链接,硬链接作用于操作系统的更底层。

一般来说,如果不确定该使用那种链接,就直接使用软链接即可(符号链接)。 硬链接受到的限制更多,比如,没有办法创建一个指向不同磁盘或者磁盘分区的硬链接,但是软链接可以做到这点。


用 ln 命令创建符号链接

我们需要在终端工具(Terminal,zsh等)中创建符号链接。

运行如下命令,可以指定符号链接是指向目录,还是指向文件

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

-s 参数用来告诉 ln 命令,我们要创建一个符号链接。如果要创建一个硬连接,只要省略 -s 这个参数就可以了。除了真的有特殊的原因,尽量不要使用硬连接,因为大多数情况下软链接(符号链接)都是更好的选择。

举个例子,假设我想创建一个从我桌面上的文件夹指向Downloads下载文件夹的符号链接,可以使用如下命令

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

执行这个命令之后,应该能看到Downloads文件夹出现在了桌面上,这实际上是一个软链接,但是mac系统会让它看上去像一个真实的目录。双击进入目录中看一眼,看上去有着Downloads目录下的所有文件——因为它确实如此,从Finder进入Downloads目录,和从桌面通过符号链接进入Downloads是相同的,他们只是指向相同的底层系统路径的不同视图(view)而已。

  • 注意,必须使用英文路径名,中文路径名如"/Users/name/下载","/Users/name/桌面"是不会起作用的!

  • 如果文件路径包含空格或者其他特殊字符,就需要用双引号括起来

ln -s "/Users/name/My Files" "/Users/name/My Link"
  • 一点一点敲键盘很麻烦,为了简化路径的输入,可以直接打开Finder,将目标文件或目录往Terminal里拖,Terminal会自动填充路径,同时也会自动加双引号。

  • 如果需要在一个当前用户没有权限访问的路径下创建符号链接,就需要在 ln 命令前加上 sudo 前缀

sudo ln -s /path/to/original /path/to/link
  • 另外,在比较新的macOS系统中,因为系统完整性保护(System Integrity Protection Feature),用户默认不被允许向系统目录中写入,也就无法在系统目录中创建链接,除非改变底层固件选项。用户可以关闭系统完整性保护,但是建议尽量不要这么做。

如何删除符号链接

就像删除其他文件一样,右键-垃圾桶,或者直接command+delete。

同时,也可以使用 rm 命令,和使用这个命令删除其他文件一样

rm /path/to/link

如何用图形化工具创建符号链接

在Finder中可以创建别名(aliase),但是别名的工作方式和符号链接不一样。别名就和windows中的快捷方式一样,并不是真正的、透明的符号链接。

要在Finder中创建符号链接,需要使用第三方工具或脚本。推荐使用开源app SymbolicLinker ,使用此app,可以直接通过 右键-服务(Services)-创建符号链接(Make Symbolic Link)来创建一个软链接。

文章引用来源:How to Create and Use Symbolic Links (aka Symlinks) on a Mac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值