linux - 为什么 ln -sf 不覆盖目录的现有链接

标签 linux gnu-coreutils ln

<分区>

根据文档,命令 ln -f 删除现有的目标文件。这是否意味着如果我创建一个符号链接(symbolic link),-f 应该删除或覆盖目标处的任何现有符号链接(symbolic link)?

我有一个符号链接(symbolic link),比如 L,指向 DIR1 并键入 ln -sf DIR2 L。但是 L 仍然指向 DIR1。只有在 rm L 之后,此命令才会创建指向 DIR2 的链接。

有了指向文件的符号链接(symbolic link),它的行为符合预期。

指向目录的链接有什么问题? (Ubuntu 16.04.2 LTS 和 Windows WSL 上的 bash 4.3.48)

最佳答案

当你运行时:

ln -sf DIR2 L

这是在 DIR1 中创建一个符号链接(symbolic link),因为 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 选项.

关于linux - 为什么 ln -sf 不覆盖目录的现有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918046/

相关文章:

ubuntu - Ubuntu for OS X ln -h 中的等效选项是什么?

linux - 在 Linux 服务器上将 Excel 提取为文本

linux - bash tar 错误不会创建 tar.gz

bash - 使用 `tail -f` 截断文件时清屏

ruby - brew install coreutils 失败 10.9.5 OSX

带空格的 Linux bash 脚本符号链接(symbolic link)

android - 在 ext4 和 fat32 之间建立链接

c - GCC - Linux - 在返回之前将堆栈设置为零?

c - rdmacm.so : Cannot open shared object file. 但是,文件存在于库路径中

linux - top命令的CPU使用率计算