Shell
為什麼 rmdir 不遞歸工作?
rmdir
只刪除一個空目錄。要遞歸刪除,rm -rf
使用。
- 為什麼沒有
rmdir
遞歸選項?從邏輯上講,當我刪除目錄時,我想使用rmdir
.- 鑑於
rm
除了最簡單的情況外,它都用於刪除目錄,為什麼rmdir
甚至存在?該功能包含在rm
.這只是歷史偶然嗎?
取消連結目錄也是非法的(超級使用者除外)。
所以
rmdir
被實現為一個只刪除目錄的小二進製文件,當時涉及刪除目錄..
和.
目錄,然後是目錄本身。rmdir
被設計為setuid root;它執行單獨的權限測試,access
以確定是否允許真實使用者刪除目錄。像任何 setuid 根二進製文件一樣,最好保持簡單且重點突出。
rm -r
實際上根據需要使用這個單獨的二進製文件來刪除目錄。
rm -r
似乎和之間的持久差異rmdir
是這種初始差異的結果。大概是因為很
rm
早就獲得了遞歸刪除的能力,並且應該有一個非常小的職權範圍,所以賦予遞歸刪除自身的能力rmdir
從來沒有被認為是有用的。rmdir