Permissions

使目錄不受“rm -rf”的保護

  • December 15, 2013

我剛剛失去了文件夾 A 中的一些數據,該文件夾在完成後位於文件夾 B 中rm -rf B。在我意識到自己做了什麼之前,一切都結束了。現在吸取了教訓,我希望讓我的一些文件夾防傻,以避免下次我做類似的事情並想自殺。

我能想到的一種方法是編寫一個 bash 函式並將其別名為rm. 此函式將在每個子文件夾中查找隱藏文件,例如.dontdelete. 找到後,它會詢問我是否真的要繼續。我不能使防寫,因為有一個不斷寫入這個文件夾的過程。有沒有更好的方法呢?

在研究您的問題時,我遇到了這種可能在將來對您有所幫助的技術。

您顯然可以像這樣觸摸目錄中的文件:

touch -- -i

現在,當您rm -fr *在存在 的目錄中執行命令時-i,您將看到來自rm.

$ ls
file1  file2  file3  file4  file5  -i

$ rm -fr *
rm: remove regular empty file `file1'? n
rm: remove regular empty file `file2'? n
rm: remove regular empty file `file3'? n
rm: remove regular empty file `file4'? n
rm: remove regular empty file `file5'? n

rm只需為to always do保留一個別名即可實現相同的目的rm -i。這會很煩人。所以我經常看到的做法是設置這個別名,然後在你真的想在沒有提示的情況下刪除它時禁用它。

alias rm='rm -i'

現在在目錄中你會受到這樣的歡迎:

$ ls
file1  file2  file3  file4  file5

$ rm -r *
rm: remove regular empty file `file1'?

要覆蓋別名:

$ \rm -r *

然而,這仍然沒有停止rm -fr。但它確實為您提供了一些保護。

參考

引用自:https://unix.stackexchange.com/questions/77864