无法删除指向目录的符号链接

时间:2019-04-05 02:27:12

标签: bash shell directory rm ln

我的reference目录中有一个目录Downloads,其中包含指向另一个目录的符号链接(使用ln -s创建)。尝试删除符号链接时收到冲突的错误消息:

rm返回“是目录”

rmdir返回“不是目录”

这仅在cellranger/(后跟正斜杠)中发生,而在cellranger中则没有。

[tom@rlgsw68 cellranger]$ pwd
/home/tom/Downloads/reference

[tom@rlgsw68 cellranger]$ ls -lth
lrwxrwxrwx 1 tom genome 33 Apr  4 14:52 cellranger -> /analysisdata/genomes/cellranger/

[tom@rlgsw68 cellranger]$ rm cellranger/
rm: cannot remove directory `cellranger/': Is a directory

[tom@rlgsw68 cellranger]$ rmdir  cellranger/
rmdir: cellranger/: Not a directory

[tom@rlgsw68 cellranger]$ rm cellranger

为什么这些命令都不能删除符号链接,为什么会发生这些冲突的错误?在不删除源目录中内容的情况下,推荐的删除符号链接的方法是什么。 rm -rf cellranger/也不会删除符号链接(但不会返回错误)。

example of terminal session

信息:我正在运行Linux服务器(Debian 9.0)。 bash和zsh都会发生这些错误。示例中的歧义名称已删除。当目录除内容外还包含指向父目录的链接时,我遇到了此问题:

/home/tom/Downloads/reference/cellranger/cellranger/ -> /analysisdata/genomes/cellranger/

1 个答案:

答案 0 :(得分:0)

通过在末尾加斜杠,是指符号链接指向的目录,而不再是符号链接本身。打印索引节点编号(文件系统中路径引用的编号)显示了取消引用符号链接和目录之间的区别:

@Jaromanda X

这可能与以下事实有关:符号链接从来都不是目录,它始终只是一个包含路径的文件。