【问题标题】:Why ln -sf does not overwrite existing link to directory [closed]为什么 ln -sf 不会覆盖到目录的现有链接[关闭]
【发布时间】:2018-10-21 17:33:13
【问题描述】:

根据文档,命令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)

【问题讨论】:

    标签: linux gnu-coreutils ln


    【解决方案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 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多