2016-11-13 116 views
1

当我今天访问了我的Ubuntu 16.04服务器并想删除文件“test2”时,它完全没有被删除!为什么rm命令不能删除文件?

我用

rm test2 

以及

rm -f test2 

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

[email protected]:~# ls 
basket desd.save packages scripts src test2 test5 unused 
[email protected]:~# rm test2 
[email protected]:~# ls 
basket desd.save packages scripts src test2 test5 unused 
[email protected]:~# rm -f test2 
[email protected]:~# ls 
basket desd.save packages scripts src test2 test5 unused 

我还试图删除其他文件,没有工作!

我是“test2”的所有者,使用ls -la test2您可以看到我有权读取和写入此文件!

[email protected]:~# ls -la test2 
-rw-r--r-- 1 root root 9 Nov 11 20:33 test2 

使用which rm它说/bin/rm

[email protected]:~# 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安装coreutils,但它表示它已经安装。
所以我第一次使用touch /bin/rm,然后chmod +x /bin/rm

之后,出现这个问题!

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

+2

请显示'ls -l test2'的屏幕截图 –

+3

'type rm' print什么? 'rm'可能是一个破碎的别名或shell函数。 –

+1

还是'哪个rm'呢? –

回答

1

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

另外一个可能性(可能不是这里的情况),是文件名有在后面加上一个空格或其他不可见的字符,而您指定的文件实际上并不存在的名称(该文件是“test2 “而不是”test2“;或者它可能是”test1<bs>2“,其中<bs>代表退格,或者......有无数种方法可以遇到问题)。

再次运行rm test2;回应提示;看看错误信息。

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

+0

即使root不能修改只读文件系统,而无需使用写入选项重新安装它。 –

+0

OP在'rm -f'之前尝试'rm'。如果问题是'rm'被别名为'rm -f',则他们需要尝试'\ rm'来避免别名。 –

+3

我对别名'rm',尤其是'root'的人有不可打印的意见。然而,这仍然是一个SFW(而不是NSFW)的场地。 –

相关问题