根据文档,命令ln -f
删除现有的目标文件。这是否意味着如果我创建符号链接,-f应该删除覆盖目标位置上任何现有符号链接的内容吗?
我有一个符号链接,例如L,指向DIR1并键入ln -sf DIR2 L
。但是L仍然指向DIR1。仅在rm L
之后,此命令才会创建指向DIR2的链接。
通过符号链接到文件,它的行为符合预期。
指向目录的链接有什么问题? (在Ubuntu 16.04.2 LTS和Windows WSL上为bash 4.3.48)
答案 0 :(得分:1)
运行时:
ln -sf DIR2 L
这将在DIR1内创建一个符号链接,导致L指向DIR1,而ln取消引用它,从而创建L/DIR2 -> DIR1
。
以下内容:
rm -fr DIR1 DIR2 L
mkdir DIR1 DIR2
ln -v -s DIR1 L
ls -la L
ln -v -f -s DIR2 L
ls -la L
将输出:
'L' -> 'DIR1'
lrwxrwxrwx 1 runner runner 4 Oct 21 18:13 L -> DIR1
'L/DIR2' -> 'DIR2'
lrwxrwxrwx 1 runner runner 4 Oct 21 18:13 L -> DIR1
要处理此问题,请使用answer in this thread on superuser.com中指示的--no-dereference
选项。