Linux不好習慣之# rm -rf *

        如果你在Linux中保持各種好的習慣,你不會直觀的感覺到有什麼好處,因爲linux都正如你所想的那樣工作的。如果你在Linux中有些不好的習慣,你會很快的發現它的惡果,有些是致命的。

不好習慣之#rm -rf *
相信很多前輩都這樣對新人說過rm -rf / 的後果,這簡直就是讓系統自孽致死。千叮嚀萬囑咐,在運行rm -rf命令之前,一定要反覆確認當前路徑,Enter鍵一按下去就沒有回頭路,就算你手再快的按下了Ctrl+C,也會有數據被刪掉了。

但是我想說的是對老手來說也很容易忽略的問題,rm -rf *命令。
大家都會經常寫一些腳本來自動完成些任務。看下面幾句代碼:

  1. #/bin/bash  
  2. cd /opt/softData/.Trash  
  3. rm -rf *  
  4.  

這兩行代碼要完成的任務是刪除/opt/softData/.Trash文件夾下的所有文件。不知道你有沒有看出其中危險的地方。
如果/opt/softData/.Trash這個文件夾存在,rm -rf *語句會按你所想的刪掉數據。
但如果/opt/softData/.Trash這個文件夾不存在呢?rm -rf *語句也會執行成功,但刪掉的數據讓你抓狂,你抓狂的程度取決與你在那個目錄運行這個腳本。假設很不幸運的是在根/目錄下運行的這段腳本,那就自求多福,沒人能幫你了,等於你運行了rm -rf /命令把系統自刪除。

因爲/opt/softData/.Trash這個文件夾不存在,cd /opt/softData/.Trash語句會報錯 -bash: cd: /opt/softData/.Trash: no such file or directory, 但你並沒cd到目標目錄,留在了當前目錄,而rm -rf *纔不管上面語句成功或失敗,照樣執行。

好的bash習慣是:

1:只要在bash中要rm東西,都應該放在判斷體中,如:

  1. #/bin/bash  
  2. if cd /opt/softData/.Trash   
  3.   then 
  4.     rm -rf *  
  5.   else 
  6.     .......  
  7.     .......  
  8. fi  


2:只要是用*來表示刪除所有東西,都應該在*前面加上全路徑,如:

  1. #/bin/bash  
  2. cd /opt/softData/.Trash  
  3. rm -rf /opt/softData/.Trash/*   


Linux系統管理中需要的是反覆確認,而不能有一點馬虎,有些時候腳本並不會按你像的那樣執行,就像上面說到的在根目錄下執行那個腳本,等你發現系統被刪完了都找不出問題出在哪裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章