为什么rm命令不能删除文件?

7
当我今天访问我的Ubuntu 16.04服务器并想要删除文件“test2”时,它根本没有被删除!
我已经使用了
rm test2

以及

rm -f test2

但是它仍然没有删除它,你可以在这里阅读到:
root@icinga:~# ls
basket  desd.save  packages  scripts  src  test2  test5  unused
root@icinga:~# rm test2
root@icinga:~# ls
basket  desd.save  packages  scripts  src  test2  test5  unused
root@icinga:~# rm -f test2
root@icinga:~# ls
basket  desd.save  packages  scripts  src  test2  test5  unused

我还尝试删除其他文件,但无效!

我是"test2"的所有者,使用ls -la test2命令,你可以看到我有读写该文件的权限!

root@icinga:~# ls -la test2
-rw-r--r-- 1 root root 9 Nov 11 20:33 test2

使用which rm命令会显示/bin/rm

root@icinga:~# which rm
/bin/rm

而且 \rm test2 并不会删除文件!
我还检查了文件名,结尾没有空格等问题,因为当我使用 cat test2 时,正确的内容显示出来了!
我也可以创建新文件,但也无法删除这个文件。 rm 也不是别名,我使用了 unalias rm,但它说“rm: not found”。
重启也没有帮助。
我遇到的问题是,我不小心删除了一个文件,而不是移动它,所以我创建了一个简单的脚本,将文件移动到特定目录。然后我使用 nano /etc/environment 添加了 ":/root/scripts",其中这个脚本位于此处!之后,我使用 alias rms='./rm' 创建了别名 rms。我知道给文件命名与系统命令相同可能很愚蠢,我已经将其更改为 remove!
但在做所有这些之后,出现了找不到 rm 的错误,并且可以在以下软件包中找到:coreutils。所以我尝试使用 apt-get install coreutils,但它说已经安装了。因此,我首先使用 touch /bin/rm,然后使用 chmod +x /bin/rm
之后就出现了这个问题!
编辑:问题是 /bin/rm 文件为空,所以我设置了一个虚拟机,并将所需文件复制到了服务器!

2
请展示ls -l test2的屏幕截图。 - Jon Taylor
3
type rm 命令会打印出 rm 的类型,如果 rm 是一个破损的别名或者 shell 函数,则会有相应提示。 - John Kugelman
1
which rm呢? - Jon Taylor
1
@JonTaylor:缺少执行权限的目录将阻止您访问(读取目录中的文件内容)。我认为它不会阻止您删除文件;目录中缺少写入权限肯定会阻止您删除文件。 - Jonathan Leffler
3
touch /bin/rm -- 你创建了一个名为 rm 的空脚本。你正在调用该脚本,这个脚本什么都不做。touch 不是解决缺少可执行文件的方法! - John Kugelman
显示剩余10条评论
1个回答

3
要删除一个文件,您需要能够修改(写入)包含该文件的目录。如果文件未被删除,则可能没有权限在目录上进行写操作。这可能是因为文件位于只读文件系统上,但更有可能是您没有目录上的写入权限。使用rm -f可以抑制错误消息和提示。
另一个可能性(可能不是这种情况),是文件名末尾有空格或其他不可见字符,并且您指定的文件名实际上不存在(文件是“test2”,而不是“test2 ”;或者它是“test1<bs>2”,其中<bs>表示退格符,或者……会遇到无数问题)。
重新运行rm test2;回答提示;查看错误消息。
或在包含文件的目录中运行ls -ld .并查看权限,但请记住,ACL(访问控制列表)和扩展属性可能会使确定您的权限变得更加困难(虽然它们不太可能成为问题的因素)。

即使是root用户,也无法在没有重新挂载为可写选项的情况下修改只读文件系统。 - Jonathan Leffler
1
OP在尝试rm -f之前尝试了rm。如果问题是rm被别名为rm -f,他们需要尝试\rm以避免别名。 - John Kugelman
4
我对使用“rm”别名的人,尤其是root用户,持有不可印刷的看法。然而,这里的意图是保持一个SFW(而不是NSFW)的场所。 - Jonathan Leffler
@StephanSchrenk:如果您曾经能够删除文件,但现在无法删除文件,则说明有些事情发生了变化。是什么变了?找出原因。您尝试过重新启动吗?听起来很老套 - 它确实很老套 - 但有时候它会奏效。您分析了保存这些文件的文件系统吗?您检查了它所使用的挂载选项吗?您能创建新文件吗?您可以删除您创建的新文件吗?您查看了目录或其父目录上的ACL吗? - Jonathan Leffler
是的,你完全正确,主要问题是文件名包含额外的空格...这就是我的问题的解决方案。 - EL TEGANI MOHAMED HAMAD GABIR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接