Shell

為什麼 rmdir 不遞歸工作?

  • December 21, 2021

rmdir只刪除一個空目錄。要遞歸刪除,rm -rf使用。

  • 為什麼沒有rmdir遞歸選項?從邏輯上講,當我刪除目錄時,我想使用rmdir.
  • 鑑於rm除了最簡單的情況外,它都用於刪除目錄,為什麼rmdir甚至存在?該功能包含在rm.

這只是歷史偶然嗎?

取消連結目錄最初是一項特權操作

取消連結目錄也是非法的(超級使用者除外)。

所以rmdir被實現為一個只刪除目錄的小二進製文件,當時涉及刪除目錄...目錄,然後是目錄本身。rmdir被設計為setuid root;它執行單獨的權限測試,access以確定是否允許真實使用者刪除目錄。像任何 setuid 根二進製文件一樣,最好保持簡單且重點突出。

rm -r實際上根據需要使用這個單獨的二進製文件來刪除目錄。

rm -r似乎和之間的持久差異rmdir是這種初始差異的結果。

大概是因為很rm早就獲得了遞歸刪除的能力,並且應該有一個非常小的職權範圍,所以賦予遞歸刪除自身的能力rmdir從來沒有被認為是有用的。rmdir

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