当前位置:  开发笔记 > 编程语言 > 正文

删除目录的符号链接

如何解决《删除目录的符号链接》经验,为你挑选了6个好方法。

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

我试着rm回去rm: cannot remove 'foo'.
我试着rmdir然后回来rmdir: failed to remove 'foo': Directory not empty
然后继续前进rm -f,rm -rf然后sudo rm -rf

然后我去寻找我的备份.

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



1> Matthew Scha..:
# this works
rm foo
# versus
rm foo/

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

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

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


没错.那讲得通.我从来没有输入过foo,我输入了f 和bash填入了/为我.
unlink命令更好.`unlink theSymLink`
具体来说,`unlink`与`ln`AKA'链接'操作无关.名称"unlink"指的是从文件系统的文件表中取消链接/删除文件的过程,以便内容与对它们的任何引用分离 - 它们是未链接的.当应用于链接和符号链接时,这是一个令人困惑的名称,这是完全误导的.`unlink`将与符号链接一起使用,因为它适用于**任何文件**,无论类型如何.
@ r3mus:永远不要在符号链接中使用`-r`,除非你想丢失其中的所有内容.除了覆盖文件权限之外,也不需要`-f`.
这并不总是有效.有时你需要运行`rm -rf folderName`(没有尾随/)才能删除符号链接.例如,Amazon Linux在某些情况下会以这种方式运行.
如果你真的担心做一些愚蠢的事情,`alias rm ="rm -i"`比我想的其他任何东西都节省了更多的皮.
@fxfilmxf`unlink`可能在`rm`所在的某些平台上不可用.

2> Joe Phillips..:

使用"unlink"命令并确保不在最后使用/

$ unlink mySymLink

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

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

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

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

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


@OmarAbid"rm foo /"版本让我害怕.这个看起来更安全:)
`unlink`可以删除常规文件.它比`rm`更不具备特色,而且不是特定于符号链接的.`rm`也不删除没有`-r`标志的目录.所以我建议更喜欢rm,它有详细和交互的标志; 以及有意义的警告和错误消息.
在Ubuntu中,我使用`〜/ c/a/file`,`/ c/b /`和`ln -s~/c/a~/c/b /`进行了测试.在`〜/ c/b /`中,`rm a /`不起作用,`rm -rf a /`只清空原来的`a`.`unlink a`工作得很好,`unlink a /`什么都不做.
这完全应该标记为答案
在OS X 10.10中,`unlink`只是`rm`的别名.这表明在处理目录结构的任何部分时应该使用正确的`rm`规则.

3> Steve K..:

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



4> 小智..:

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


你没有错,但正确的答案已经在这里并被接受(4年前!).何必?

5> Joshua..:

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

$ rm -d symlink

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



6> Greg Hewgill..:

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

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有