当我这样指定它时,它可以正常工作:
cd ~
ln -s /run/media/name/exhdd/Data/ Data
但是,当我尝试这样做时,它会创建错误的链接:
cd /run/media/name/exhdd
ln -s Data/ ~/Data
这会创建我无法
cd
的链接。当我尝试时,bash抱怨:
bash: cd: Data: Too many levels of symbolic links
当
ls
设置为显示彩色输出时,我家中的数据符号链接也被涂成红色。 br /> 为什么会这样?如何以这种方式创建链接? (我想在我的工作目录中的另一个目录中创建指向目录的符号链接。)
编辑:根据此StackOverflow答案,如果第二个参数(在我的(如果是〜/ Data)已经存在并且是一个目录,则
ln
将在该目录内创建指向目标的符号链接。但是,我在遇到以下问题:
ln -s Data/ ~/
#1 楼
这是正在发生的事情。如果使用相对路径创建符号链接,则该符号链接将是相对的。符号链接仅存储您提供的路径。他们从不解析完整路径。运行$ pwd
/usr/bin
$ ln -s ls /usr/bin/ls2
,相对于符号链接所在的目录(
ls2
),在/usr/bin
至ls
(即/usr/bin/ls
)中创建一个名为/usr/bin
的符号链接。上面的命令将从任何目录创建一个功能性符号链接。$ pwd
/home/me
$ ln -s ls /usr/bin/ls2
如果将符号链接移动到另一个目录,它将停止指向
/usr/bin/ls
的文件。 您正在建立一个指向
Data
的符号链接,并将其命名为Data
。它指向自己。您必须与目录的绝对路径进行符号链接。ln -s "$(realpath Data)" ~/Data
#2 楼
我遇到了同样的问题。 Google给出了这个答案,但是这里没有记录最简单的解决方案:ln -sT
-T可以解决问题
man ln:
-T, --no-target-directory
treat LINK_NAME as a normal file always
只需在此处添加此内容,以便有相同问题的任何人都可以找到:)
#3 楼
ln
的相对路径行为是不直观的。要恢复理智,请使用-r
标志。cd /run/media/name/exhdd
ln -sr Data/ ~/Data
说明:
-r, --relative
create symbolic links relative to link location
这是什么意思
ln
将完成您的期望。它将考虑您所在的目录,目标所在的目录,并构造相对于链接将位于的目录的路径。默认行为(不带-r
)是从字面上解释第一个参数(目标),在这种情况下,您必须自己构造路径,以便在链接的目录中有效。也可以使用绝对路径,如@SmithJohn
ln -s "$(realpath Data)" ~/Data #bash shell
或
ln -s "(realpath Data)" ~/Data #fish shell
#4 楼
很简单,您可以为文件夹创建链接。看我的命令ln -s / home / targatedfolder / var / www / html / link_name
评论
只是一个随机提示:cd〜通常与cd相同。ls -l〜/ Data可以帮助您查看“红色”链接出了什么问题。
嗯,不知道我能做到,谢谢。我记得曾经尝试过照顾它,但我忘记了结果如何...(我当时不在他们家。)
旁注,假设您只想创建特定文件夹内所有文件dir和subdir的符号链接,例如/ run / media / name / exhdd / Data /内的所有项到Data,然后使用以下ln -s / run / media / name / exhdd / Data / *数据