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

时间:2016-11-13 17:41:19

标签: bash shell ubuntu-16.04 rm

当我今天访问我的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。我知道这可能是一个愚蠢的命名文件,如系统命令,我已经改变它删除!

但是在完成所有这些之后,出现了无法找到rm的错误,可以在以下软件包中找到:coreutils。所以我尝试了apt-get install coreutils,但它说已经安装了 所以我先使用touch /bin/rm然后使用chmod +x /bin/rm

之后发生了这个问题!

编辑:问题是/bin/rm文件是空的,所以我设置了一个虚拟机并将所需的文件复制到服务器上!

1 个答案:

答案 0 :(得分:1)

要删除文件,您需要能够在包含该文件的目录中修改(写入)。如果文件没有删除,那么您可能没有权限在目录上写入。这可能是因为该文件位于只读文件系统上,但您很可能对该目录没有写入权限。使用rm -f可以抑制错误消息(和提示)。

另一种可能性(这里可能不是这种情况)是文件名末尾有空格或其他不可见字符,并且您指定为文件的名称实际上并不存在(文件是& #34; test2&#34;而不是&#34; test2&#34 ;;或者它可能是&#34; test1<bs>2&#34;其中{{1代表退格,或者...有无穷无尽的方式来解决问题)。

重新运行<bs>;回应提示;看一下错误信息。

或者在包含该文件的目录中运行rm test2并查看权限,但请记住,ACL(访问控制列表)和扩展属性可能会使您更难找出您的权限(尽管如此,他们& #39;不太可能成为问题的一个因素。)