为什么我无法将预先存在的文件符号链接到目标文件?

为什么我无法将预先存在的文件符号链接到目标文件?

我有一个例子可以更好地说明我在说什么:

$ touch tas
$ ln -s /etc/leviathan_pass/leviathan3 /tmp/l2/tas
ln: failed to create symbolic link '/tmp/l2/tas': File exists

基本上,如果我要链接的文件不存在,我只能进行符号链接。在谈论硬链接时,我理解这个问题 - 无法链接两个不同的文件,因为这会导致 inode 冲突(因此必须在命令运行时创建文件,以确保,并且我假设,它们都“指向”同一个 inode)。现在,当谈论软链接时,它对我来说没有意义,符号链接与 inode 无关,那么问题可能是什么?

预先感谢您的任何帮助。

答案1

默认情况下,该命令ln不会破坏现有文件。您可以使用ln -sf TARGET LINK_NAME符号链接强制覆盖目标路径 (LINK_NAME)。

您可以使用ln -f TARGET LINK_NAME硬链接覆盖 LINK_NAME,您的解释对于 inode 冲突没有任何意义。它只是替换文件。你说对了一部分目标硬链接必须首先存在。

相关内容