如何修复指向错误位置的符号链接?

如何修复指向错误位置的符号链接?

我对这里的硬链接/软链接有点困惑。我在 OSX 上,有一个文件夹“4”和两个指向它的链接:

drwxr-xr-x  4 imm  staff  136 14 Jun 21:24 4
lrwxr-xr-x  1 imm  staff    1 14 Jun 16:56 4.0 -> 4
lrwxr-xr-x  1 507  wheel    1 14 Jun 16:56 Current -> 4

当我在文件夹中跟踪“当前”时,它会指向一个完全不同的位置(我从中复制了所有内容的路径)。我希望“当前”指向新位置的文件夹“4”。

我怎样才能实现这个目标?

答案1

您需要删除并重新创建链接。您可以使用

rm Current

然后重新创建它:

ln -s /path/to/the/new/location Current

您可以使用绝对路径(为了简单起见)。

如果您希望在移动链接时路径也移动,则可以使用相对路径。请记住,它存储相对路径,并且仅在您尝试访问链接时从链接的当前位置解析它。

编辑:既然您提到了硬链接,我将继续在这里介绍它们。

硬链接与符号链接类似,它仍然指向文件,但仅限于当前文件系统,而且速度更快。硬链接指向磁盘上的特定 inode,而不是文件系统中的另一个位置。您不能有相对硬链接。

您可以将基本文件系统视为指向磁盘上位置的硬链接集合,每个文件一个。创建额外的硬链接只会创建指向同一文件的额外指针。它们的速度要快得多,因为系统确切地知道它需要的文件在磁盘上的位置(必须解析符号链接,然后必须查找和解析该新文件),但正因为如此,它仅限于当前文件系统上的 inode。

文件系统自动跟踪指向特定 inode 的硬链接数量,当该计数达到 0 时,直接删除该 inode。

答案2

你可以这样做:

ln -nfs /path/to/the/new/location Current

其中“Current”是当前的符号链接。-n 和 -f 选项取消链接并删除原始“Current”,并允许创建新的符号链接(-s 表示软链接)。

我意识到这个问题很久以前就得到了回答,原始问题也得到了解决,但是重新指向符号链接而不经过单独的删除步骤的过程再次困扰着我,在谷歌上搜索解决方案时出现了这个问答。希望它能帮助其他寻找答案的人!

相关内容