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

7 bash shell rm ubuntu-16.04

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

我用过

rm test2
Run Code Online (Sandbox Code Playgroud)

rm -f test2
Run Code Online (Sandbox Code Playgroud)

但它仍然没有删除它,您可以在这里阅读:

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
Run Code Online (Sandbox Code Playgroud)

我也尝试过删除其他文件,但没有成功!

我是“test2”的所有者,使用ls -la test2你可以看到我有读写这个文件的权限!

root@icinga:~# ls -la test2
-rw-r--r-- 1 root root 9 Nov 11 20:33 test2
Run Code Online (Sandbox Code Playgroud)

使用which rm它说/bin/rm

root@icinga:~# which rm
/bin/rm
Run Code Online (Sandbox Code Playgroud)

而且也不\rm test2删除文件!

我还检查了名称,末尾没有空格等,因为当我使用时cat test2会显示正确的内容!

我也可以创建一个新文件,但也无法删除它。

rm也不是别名,我使用过unalias rm,但它说“rm:未找到”。

重新启动也没有帮助。

我遇到的问题是我不小心删除了文件而不是移动它,因此我创建了一个脚本,只需将文件移动到某个目录即可。
然后我使用nano /etc/environment并添加了该脚本所在的“:/root/scripts”!
之后,我使用创建了别名 rms alias rms='./rm'。我知道像系统命令一样命名文件可能很愚蠢,我已经将其更改为删除!

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

之后就出现了这个问题!

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

Jon*_*ler 3

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

\n\n

另一种可能性(可能不是这里的情况)是文件名末尾有空格或其他不可见字符,并且您指定为文件的名称实际上并不存在(文件是“”test2而不是“ test2"; 或者可能是 " test1<bs>2",其中<bs>代表退格键,或者 \xe2\x80\xa6 (有无数种方法会遇到问题)。

\n\n

重新运行rm test2;响应提示;查看错误消息。

\n\n

或者ls -ld .在包含该文件的目录中运行并查看权限,但请记住,ACL(访问控制列表)和扩展属性可能会使您更难确定您的权限(尽管同样,它们不太可能成为影响因素)在问题中)。

\n

  • 我对别名“rm”的人有不可发表的看法,尤其是“root”。然而,这仍然是一个 SFW(而不是 NSFW)场所。 (4认同)