2016-11-13 111 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)的場地。 –

相關問題