如何在终端中创建符号链接?


Answers:


542
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

有关ln(1)的更多信息,请参见手册页

符号链接的路径是可选的;如果省略,则ln默认在当前目录中建立与目标名称相同的链接:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

要创建符号链接来替换系统目录(例如,如果您要/Users指向另一个磁盘驱动器),则需要禁用系统完整性保护。设置符号链接后,可以重新启用它。


63
如果只有手册页与您的答案一样清楚!
阿德里安·林奇

权限被拒绝:S您能给我一个提示吗?尝试为用户创建符号链接,以便我可以在其他硬盘上使用它,而ssd仅具有符号链接。谢谢
Ewoks

2
@patrix我已经编辑了答案以弄清楚;随时进行进一步编辑。
grg

4
有趣的事实:原著并不需要实际存在。该命令ln -s "This directory is no longer in use" README是完全合法的,然后执行的任何人ls -l都将看到该消息。
爱德华·福尔克

1
供将来参考:无需在macOS上移动/ Users以节省空间。您可以通过右键单击用户列表条目,在“系统偏好设置”中的“用户和组”下分别更改用户的主目录路径。
Peter W.

73

该命令称为ln。如果与该选项一起使用,-s它将在当前目录中创建一个符号链接:

ln -s /any/file/on/the/disk linked-file

1
链接文件必须首先存在吗?我在目标上收到文件未找到错误。
AlxVallejo

2
该文件不是(如果显示,则会显示错误消息),而是任何路径中的所有目录。如果您陷入困境,请随时使用右上方的“询问问题”按钮询问新问题。包括此问题的链接以提供上下文。
nohillside

在运行此命令之前,符号链接应该不存在。但是据我所知,有效路径是必需的。如果在运行此命令之前输出文件的文件夹不存在,则也会No such file or directory出现错误。
Deniz Kaplan

34

我知道这个问题是明确询问终端的,但是如果您在GUI Land中并且不想输入Terminal Land,则可以使用SymbolicLinker。这会在Finder的“服务”菜单中放置“制作符号链接”选项。

文件夹的上下文菜单,其中显示“服务”子菜单,并带有“使符号链接”突出显示

符号链接的上下文菜单,其中“使符号链接”突出显示


3
我很想知道为什么这会被否决,所以从现在起我可以做出更高质量的答案:)
Ben Leggiero

10
可能是因为问题是“如何在终端中创建符号链接?” 但是我并没有拒绝你:)
vedrano '16

1
@EdwardFalk我认为在El Capitan中,您可以按住Command+ Option拖动文件...稍后将更新答案
Ben Leggiero

1
@BenLeggiero这是一个别名。
安迪·斯图尔特

2
@BenLeggerio,在这里解释差异:apple.stackexchange.com/questions/2991/…–
MiB


5

ln -s /some/dir/ ~/Desktop/dir

您也可以使用相同的命令为目录创建符号链接

ln -s "$(pwd)" ~/Desktop/dir

要创建到当前目录的符号链接,请进入。


2
一个简单的.(点)将给出密码。不需要花哨的论点:)
mylogon '18

@mylogon哈哈哈我有时想想太多。简化了我的答案!
杰拉尔德

@mylogon我刚刚意识到这.在macOS上不起作用。尚未尝试在Linux上。使用./导致foo -> ./foo指向自己的结果。
杰拉尔德

您输入的完整命令是什么?
mylogon '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.