代码之家  ›  专栏  ›  技术社区  ›  Matthew Scouten

删除指向目录的符号链接

  •  991
  • Matthew Scouten  · 技术社区  · 16 年前

    我有一个重要目录的符号链接。我想去掉那个符号链接,同时保留它后面的目录。

    rm 回来 rm: cannot remove 'foo' .
    rmdir 回来了 rmdir: failed to remove 'foo': Directory not empty
    rm -f , rm -rf sudo rm -rf

    然后我去寻找我的备份。

    有没有办法摆脱符号链接而不把婴儿和洗澡水一起扔掉?

    9 回复  |  直到 10 年前
        1
  •  1388
  •   michaelrbock Bob    5 年前
    # this works:
    rm foo
    # versus this, which doesn't:
    rm foo/
    

    基本上,您需要告诉它删除 文件 ,而不是删除 目录 rm rmdir

    无论如何,第一个应该可以工作,而第二个应该抱怨foo是一个目录。

    如果不能像上面那样工作,请检查您的权限。您需要对包含目录的写入权限才能删除文件。

        2
  •  847
  •   Community Mr_and_Mrs_D    4 年前

    使用“取消链接”命令并确保 最后

    $ unlink mySymLink
    

    unlink()从文件系统中删除名称。 如果该名称是指向文件的最后一个链接,并且没有进程打开该文件,则会删除该文件,并使其使用的空间可供重用。 如果名称是指向文件的最后一个链接,但任何进程仍打开该文件,则该文件将一直存在,直到引用它的最后一个文件描述符关闭。

    如果名称引用了符号链接,则该链接将被删除。

    如果名称指的是套接字、fifo或设备,则该名称将被删除,但打开该对象的进程可能会继续使用该名称。

    https://linux.die.net/man/2/unlink

        3
  •  20
  •   Steve K    16 年前

    skrall@skrall-desktop:~$ mkdir bar
    skrall@skrall-desktop:~$ ln -s bar foo
    skrall@skrall-desktop:~$ ls -l foo
    lrwxrwxrwx 1 skrall skrall 3 2008-10-16 16:22 foo -> bar
    skrall@skrall-desktop:~$ rm foo
    skrall@skrall-desktop:~$ ls -l foo
    ls: cannot access foo: No such file or directory
    skrall@skrall-desktop:~$ ls -l bar
    total 0
    skrall@skrall-desktop:~$ 
    
        4
  •  19
  •   Brad    10 年前

    使用 rm symlinkname rm symlinkname/ )。然后会询问您是否要删除符号链接, y

        5
  •  14
  •   Brad    10 年前

    假设它实际上是一个符号链接,

    $ rm -d symlink
    

    它应该能找到答案,但既然不能,我们就启用了潜在的代码,这些代码原本是为另一个不再存在的案例设计的,但却恰好在这里做了正确的事情。

        6
  •  9
  •   Greg Hewgill    16 年前

    如果rm无法删除符号链接,可能需要查看包含该符号链接的目录上的权限。要删除目录项,您需要对包含的目录具有写权限。

        7
  •  5
  •   TJ L    16 年前

    假设您的设置类似于: ln -s /mnt/bar ~/foo ,那么你应该可以做一个 rm foo 没问题。如果您不能,请确保您是 foo 并具有写入/执行该文件的权限。移除 不会碰 bar ,除非你递归地做。

        8
  •  3
  •   JasonMArcher TWE    10 年前

    在CentOS,快跑 rm linkname 进来 ,链接将消失,目录将安全。

        9
  •  3
  •   Keith Whittingham    6 年前

    我在Windows服务器上运行MinGW(实际上是GitBash)时遇到了这个问题。上述建议似乎都不起作用。最后,a制作了一份目录副本,以防在Windows资源管理器中删除软链接,然后删除回收站中的项目。它发出噪音,好像在删除文件,但没有。但一定要备份!

        10
  •  2
  •   U. Windl    4 年前

    unlink <absolute path> .

    例如 unlink ~/<USER>/<SOME OTHER DIRECTORY>/foo

        11
  •  1
  •   R. Pandey    4 年前

    解除链接 在创建符号链接的文件夹中