如何在Linux上创建一个指向目录的链接

460
如何使用GNU Linux shell命令创建到现有文件或目录的链接?

@jcollum: 可能是这样... UnixSE 有类似的问答,例如,但是这里选择的答案似乎更好。 - user5395338
ln -s /data/data/com.termux/files/usr/lib/python3.9/site-packages /data/data/com.termux/files/usr/lib/python3.10/site-packages - CS QGB
2个回答

816

符号链接或软链接(文件或目录,更灵活且自我记录)

#     Source                             Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx

硬链接(仅文件,灵活性较差且不具备自我文档化功能)

#   Source                             Link
ln /home/jake/doc/test/2000/something /home/jake/xxx

更多信息请参见:ln手册


/home/jake/xxx 就像一个新的目录。为了避免出现“不是目录:没有那个文件或目录”的错误,如 @trlkly 的评论所述,在目标中使用相对路径,例如:

  1. cd /home/jake/
  2. ln -s /home/jake/doc/test/2000/something xxx

62
请注意,使用此语法必须使用完整路径。我最终不得不使用ln "$(pwd)/相对路径" xxx,以便使用相对路径获取xxx的绝对链接。显然,对于源目录,bash clobbering规则不会扩展。 - trlkly
1
我的Debian系统提示“目录不允许硬链接”。 - zbig
1
正如trlkly所说,手动编写完整路径。即使是主目录“〜”,“ln”命令也不会展开。 - Anton Tarasenko
第二个文件参数是链接名称,根据man ln,我认为第一个参数是目标。您说第二个参数是目标。 - Timo
如果我省略了尾随斜杠,软链接到目录就可以工作。链接路径不需要是相对的。 - Lupilum
显示剩余3条评论

61

你应该使用:

ln -s /home/jake/doc/test/2000/something xxx

正如trlkly在这个答案的评论中提到的,我必须同时使用源和链接的完整路径。 - Pedram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接