2009-07-20 12:40:03 +0000 2009-07-20 12:40:03 +0000
101
101
Advertisement

如何删除一个目录的符号链接?

Advertisement

我用下面的命令建立了一个符号链接。

ln -s ../test5

我现在想删除它,但我的rm失败了。

$ rm -Rf test5/
rm: cannot remove `test5/': Not a directory
$ rm test5/
rm: cannot remove directory `test5/': Is a directory
$ rmdir test5/
rmdir: test5/: Not a directory
$rm -r test5/
rm: cannot remove `test5/': Not a directory

$ls -l
 0 lrwxrwxrwx 1 peter peter 8 Jul 20 15:30 test5 -> ../test5/

我怎样才能删除我的符号链接?(Ubuntu 8.10, bash)

Advertisement
Advertisement

答案 (6)

122
122
122
2009-07-20 12:51:01 +0000

去掉后面的斜杠:

有提示。

$ rm test5

无提示。

$ rm -f test5

21
21
21
2009-07-20 12:54:12 +0000

试试rm test5 (没有训练斜线)。

斜线表示'test5'是一个目录,而实际上它是一个文件_链接到一个目录。

14
Advertisement
14
14
2009-07-20 13:06:36 +0000
Advertisement

你可以运行删除尾部的斜线:

$ rm test5

这将删除文件(即符号链接)。

或者你可以使用unlink。

$ unlink test5

同样,你必须省略尾部的斜杠,因为你是在尝试解开符号链接而不是目录。

0
0
0
2019-05-02 03:05:12 +0000

OP中的问题是尾部的/,所以test5/会抛出错误,但test5可以用。

我更喜欢用unlink而不是rm,因为我的意图更明确,也不会出现误删除真实目录而不是链接的情况。确保在目录名后没有尾部的/,例如。

unlink test5
0
Advertisement
0
0
2018-02-14 23:23:37 +0000
Advertisement

有时如果你使用自动完成来命名你要删除的链接,你可能看不到尾部的斜线,但它是 “一半在那里",当试图删除该链接时,那个看不见的斜线仍然给出删除错误。

所以在这种情况下,把要删除的链接以 "test5 "的形式逐个输入字符,例如rm test5.

-1
-1
-1
2009-07-20 12:42:27 +0000

我觉得这样问很傻,但你试过rm -r吗?既然是符号链接,应该不会删除目标。

编辑:刚试了一下,是正确的

编辑2:rmdir在它的man页面第一行说它会删除空目录。我想因为它是一个链接,所以它的文件属性中检查了目录位,但是因为rmdir没有怀疑是这种情况,所以它吐出了错误。只要用rm -r

Advertisement

相关问题

6
10
11
5
5
Advertisement
Advertisement