我是新手。我正在学习ln
命令。所以我创建了一个指向另一个目录 bar 中的文件 foo.txt 的符号链接。
ln -s foo.txt bar
当我尝试访问时bar/foo.txt
,出现错误“符号链接层数过多“。有人可以再详细解释一下符号链接吗?我尝试做的是不可能的,还是有其他方法可以实现?基本上,我想要一个指向目录 bar 中的 foo 的链接,该目录与 foo 位于同一目录中。
directory
|__foo.txt
|__bar
|__(link to foo.txt)?
答案1
符号链接目标存储为原始路径(因此称为“符号”链接)。默认情况下,当您使用ln -s
目标路径时,会存储字面上地– 它不是相对的,而是按照您指定的方式存储的。
因此,必须指定相对路径,就好像它们是相对于链接的位置一样,不是相对于您当前的位置:
ln -s ../foo.txt bar/foo.txt
因为链接在bar/
,所以链接将指向bar/../foo.txt
。
如果您首先知道链接的位置,创建相对链接将变得容易得多cd
(因为链接的位置和您当前的位置将是相同的)。
在最新的 Linux 上,该ln
命令有一个附加-r
选项来简化此操作并按照您期望的方式创建相对链接:
ln -r -s foo.txt bar/foo.txt
(请注意,执行此操作后,链接的目标将自动../foo.txt
再次变为。)
在 Linux 上,您可以尝试使用namei
命令来直观地了解某个路径(包括符号链接)是如何被遵循的。