Linux
為什麼 rm 需要 -r 用於空文件夾?
一直困擾我的一件事:
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
選項尚不存在)