Linux

為什麼 rm 需要 -r 用於空文件夾?

  • November 7, 2019

一直困擾我的一件事:

touch a
rm a

好的,它按預期工作

mkdir a
rm a

將需要 -r 才能工作;但我不明白什麼是遞歸?如果文件夾為空,則沒有任何遞歸。我希望 rm a 嘗試刪除 a,如果它不為空,則失敗,並且 rm -r 遞歸地刪除 a 的內容。

為什麼會這樣?

編輯:這個問題已被標記為一個完全不相關的問題的重複。我的問題可以概括為:為什麼我需要一個遞歸標誌來執行非遞歸操作:mkdir a, rm -ra 沒有任何遞歸。這與另一個問題無關,即為什麼 rm 預設情況下不遞歸。

這是因為rm根本不打算刪除目錄。

最初rm不支持-r,使用者只有 1 個選項:刪除目錄中的所有文件,rm然後刪除(現在為空的)目錄rmdir

顯然這樣的工作非常煩人,因此-r實施以解決此問題。

但是如果rm /some/empty/dir開始工作,它將不再向後兼容(因此它可能會破壞假設rm /some/empty/dir失敗的舊程式碼)。這-r不是問題,因為尚未定義此行為(因為該-r選項尚不存在)

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