![为什么我无法将预先存在的文件符号链接到目标文件?](https://linux22.com/image/194964/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E6%97%A0%E6%B3%95%E5%B0%86%E9%A2%84%E5%85%88%E5%AD%98%E5%9C%A8%E7%9A%84%E6%96%87%E4%BB%B6%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E5%88%B0%E7%9B%AE%E6%A0%87%E6%96%87%E4%BB%B6%EF%BC%9F%20.png)
我有一个例子可以更好地说明我在说什么:
$ 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 冲突没有任何意义。它只是替换文件。你说对了一部分目标硬链接必须首先存在。