Filesystems

sudo rm -rf –no-preserve-root / vs sudo rm -rf /*

  • August 28, 2016

眾所周知,這是兩個致命的 unix 命令,它們都告訴機器自殺。但是這兩者有什麼區別呢?第一個刪除根目錄,而第二個刪除其中的所有內容。兩者都同樣糟糕,但是第一個會因為刪除根目錄本身而刪除文件系統嗎?有什麼不同?

rm -r dir與和的區別相同rm -r dir/*

第二個只刪除 glob 匹配的任何內容,通常是名稱不以點開頭的每個文件,但可以在 bash 和可能的其他文件中配置。如果目錄中有很多文件,它也會失敗,因為命令行只能容納這麼多。並不是說您通常會在根目錄中擁有任何一個,但仍然如此。

第一個將遞歸到dir,刪除所有內容,然後是目錄本身。但如前所述,無論如何您都無法刪除根目錄。在 Linux 上,您得到的錯誤是Device or resource busy,這正是您試圖刪除任何包含已安裝文件系統的目錄的錯誤。(它甚至不會在刪除目錄之前檢查目錄是否為空。)

出於同樣的原因,您通常也不能讓根目錄為空,您將安裝/proc/sys(在 Linux 上)之類的東西,並且您無法在不解除安裝它們的情況下刪除安裝點。


好吧,嚴格來說,刪除所有文件並不會殺死系統……它只是讓啟動外部程序來做一些事情的通常範式有點難以使用。但是執行不再需要文件系統上任何文件的程序不會受到影響。您也許可以嘗試使用busyboxshell 之類的東西,它集成了rmls. (不過,如果您的引導文件位於已掛載的文件系統上,那麼下次啟動可能會很困難。)

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