首页 文章

删除目录的符号链接

提问于
浏览
965

我有一个重要目录的符号链接 . 我想摆脱那个符号链接,同时保持它背后的目录 .

我试过 rm 然后回来 rm: cannot remove 'foo' .
我试过 rmdir 然后回来 rmdir: failed to remove 'foo': Directory not empty
然后我通过 rm -frm -rfsudo rm -rf 进展

然后我去寻找我的备份 .

有没有办法摆脱符号链接,而不是用洗澡水扔掉婴儿?

9 回答

  • 1
    # this works
    rm foo
    # versus
    rm foo/
    

    基本上,您需要告诉它删除文件,而不是删除目录 . 我认为 rmrmdir 之间存在差异,因为C库对待每个库的方式不同 .

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

    如果它不能如上所述,那么检查您的权限 . 您需要对包含目录的写入权限才能删除文件 .

  • 3

    使用"unlink"命令并确保 not 具有/的结尾

    $ unlink mySymLink
    

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

    我认为如果我正确阅读它可能会有问题 .

    如果名称引用符号链接,则删除该链接 . 如果名称引用套接字,fifo或设备,则删除其名称,但打开该对象的进程可以继续使用它 .

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

  • 1186

    如果rm无法删除符号链接,则可能需要查看包含符号链接的目录的权限 . 要删除目录条目,您需要对包含目录具有写入权限 .

  • 794

    假设您的设置类似于: ln -s /mnt/bar ~/foo ,那么您应该能够做到 rm foo 没有问题 . 如果您不能,请确保您是 foo 的所有者,并且有权编写/执行该文件 . 删除 foo 将不会触及 bar ,除非您以递归方式执行此操作 .

  • 12

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

    $ rm -d symlink
    

    它应该弄清楚,但是因为它不能我们启用潜在的代码,这个潜在的代码用于另一个不再存在的情况,但恰好在这里做正确的事情 .

  • 12

    使用 rm symlinkname 但最后不要包含正斜杠(请勿使用: rm symlinkname/ ) . 然后会询问您是否要删除符号链接, y 以回答是 .

  • 2

    我在Windows Server上运行的MinGW(实际上是Git Bash)遇到了这个问题 . 上述建议似乎都不起作用 . 最后制作一份目录副本,以防在Windows资源管理器中删除软链接,然后删除回收站中的项目 . 它发出的声音就像删除文件但没有 . 尽管做备份!

  • 15

    rm应该删除符号链接 .

    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:~$
    
  • 7

    在CentOS上,只需运行 rm linkname ,它将询问"remove symbolic link?" . 键入Y和Enter,链接将消失,目录是安全的 .

相关问题