删除目录的符号链接

新手上路,请多包涵

我有一个指向重要目录的符号链接。我想摆脱那个符号链接,同时将目录保留在它后面。

我尝试了 rm 并返回 rm: cannot remove 'foo'

我试过了 rmdir 然后回来了 rmdir: failed to remove 'foo': Directory not empty

然后我通过 rm -frm -rfsudo rm -rf

然后我去找我的备份。

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

原文由 Matthew Scouten 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 708
2 个回答
# this works:
rm foo
# versus this, which doesn't:
rm foo/

基本上,您需要告诉它删除 _文件_,而不是删除 _目录_。我相信 rmrmdir 之间存在差异,因为 C 库处理它们的方式不同。

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

如果它不能按上述方式工作,请检查您的权限。您需要对包含目录的写入权限才能删除文件。

原文由 Matthew Scharley 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用“取消链接”命令并确保末尾 没有/

 $ unlink mySymLink

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

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

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

如果名称引用了套接字、fifo 或设备,则删除它的名称,但打开对象的进程可以继续使用它。

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

原文由 Joe Phillips 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题