当我今天访问我的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
文件是空的,所以我设置了一个虚拟机并将所需的文件复制到服务器上!
答案 0 :(得分:1)
要删除文件,您需要能够在包含该文件的目录中修改(写入)。如果文件没有删除,那么您可能没有权限在目录上写入。这可能是因为该文件位于只读文件系统上,但您很可能对该目录没有写入权限。使用rm -f
可以抑制错误消息(和提示)。
另一种可能性(这里可能不是这种情况)是文件名末尾有空格或其他不可见字符,并且您指定为文件的名称实际上并不存在(文件是& #34; test2
"而不是" test2
&#34 ;;或者它可能是&#34; test1<bs>2
&#34;其中{{1代表退格,或者...有无穷无尽的方式来解决问题)。
重新运行<bs>
;回应提示;看一下错误信息。
或者在包含该文件的目录中运行rm test2
并查看权限,但请记住,ACL(访问控制列表)和扩展属性可能会使您更难找出您的权限(尽管如此,他们& #39;不太可能成为问题的一个因素。)