【问题标题】:Why does the rm command not remove the file? [closed]为什么 rm 命令不删除文件? [关闭]
【发布时间】:2017-03-27 09:17:36
【问题描述】:

当我今天访问我的 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 文件是空的,所以我设置了一个虚拟机并将所需的文件复制到服务器!

【问题讨论】:

  • 请出示ls -l test2的截图
  • type rm 打印什么? rm 可能是一个损坏的别名或 shell 函数。
  • 还是which rm
  • @JonTaylor:对目录缺乏执行权限会阻止您访问(读取)目录中的文件。我认为这不会阻止您删除文件;目录缺少写权限肯定会阻止您删除文件。
  • touch /bin/rm -- 您创建了一个名为 rm 的空脚本。你正在调用那个脚本,一个什么都不做的脚本。 touch 不是缺少可执行文件的答案!

标签: bash shell ubuntu-16.04 rm


【解决方案1】:

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

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

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

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

【讨论】:

  • 即使是 root 也无法修改只读文件系统,除非使用写入选项重新挂载它。
  • OP 在rm -f 之前尝试rm。如果问题是 rm 别名为 rm -f,他们需要尝试 \rm 以避免别名。
  • 我对别名为rm 的人有不可打印的看法,尤其是root。然而,这意味着保持 SFW(而不是 NSFW)场地。
  • @StephanSchrenk:如果您以前可以删除文件,而现在不能删除文件,那么情况发生了变化。什么?追踪它。您是否尝试过重新启动?这听起来很老套——很老套——但有时它确实有效。您是否分析过保存这些文件的文件系统?您是否检查过它所使用的挂载选项?可以新建文件吗?您可以删除您创建的新文件吗?您是否查看过目录或其父目录上的 ACL?
  • 是的,你是完全正确的主要问题是文件名包含额外的空格...这是我的问题的解决方案
猜你喜欢
  • 2015-08-17
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2017-12-16
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多