在 Linux 日常運維中,rmdir 與 rm 都是刪除操作的主力命令,但它們的適用場景、功能範圍與風險等級截然不同。本文通過參數詳解、實戰範例與最佳實踐,幫您徹底搞清何時用哪個,避免誤刪數據。
| 特性 | rmdir | rm |
|---|---|---|
| 功能定位 | 專門刪除空目錄 | 可刪除文件與目錄(含非空目錄) |
| 遞歸刪除 | 不支援(需配合 -p 刪除空父目錄) | 支援 -r/-R 遞歸刪除整棵目錄樹 |
| 交互確認 | 無 | 支援 -i 逐個確認 |
| 強制刪除 | 無 | 支援 -f 忽略不存在/只讀文件 |
| 誤操作風險 | 極低(只能刪空目錄) | 極高(rm -rf / 可毀滅系統) |
rmdir [-p] [-v] 目錄名...
-p:遞歸刪除父目錄。若子目錄被刪除後父目錄變為空,則連帶刪除父目錄(類似 mkdir -p 的逆操作)。-v:顯示執行過程詳細資訊。$ mkdir -p dir1/dir2 dir1/dir3
$ ls dir1/
dir2 dir3
$ rmdir dir1 # 失敗:目錄非空
rmdir: failed to remove 'dir1': Directory not empty
$ rmdir dir1/dir3 # 成功刪除空子目錄
$ rmdir -p dir1/dir2 # 刪除 dir2 後 dir1 變空,連帶刪除 dir1
$ ls # 當前目錄已空
rm [-f] [-i] [-r] [-v] 文件/目錄...
-f:強制刪除,忽略不存在的文件、不提示確認(慎用)。-i:交互模式,逐個文件確認刪除(建議別名 alias rm='rm -i')。-r/-R:遞歸刪除目錄及其所有內容(核心參數)。-v:顯示詳細操作過程。$ ll
total 12
-rwxrwxr-x 1 user user 5 Apr 4 08:48 aa
-r--r--r-- 1 user user 5 Apr 4 08:49 cc
drwxrwxr-x 2 user user 4096 Apr 4 08:48 dir1
$ rm -i aa # 交互刪除普通文件
rm: remove regular file 'aa'? y
$ rm cc # 嘗試刪除只讀文件,預設會提示
rm: remove write-protected regular file 'cc'? n
$ rm -f cc # 強制刪除只讀文件,無提示
$ rm -r dir1 # 遞歸刪除非空目錄
-foo)rm -- -foo # 使用 -- 結束選項解析
rm ./-foo # 使用相對路徑明確指定
rm 只是解除目錄項鏈接,數據實體仍殘留在磁盤上,可通過 extundelete、testdisk 等工具嘗試恢復。若需不可恢復銷毀,請使用 shred 或 wipe。
在 ~/.bashrc 中添加:
alias rm='rm -i'
alias rmdir='rmdir -v'
登入後生效,大幅降低誤刪風險。

rmdir,安全無副作用。rm,並謹記 -i 保命、-f 慎用、-r 必加。熟練掌握兩者差異與最佳實踐,是 Linux 運維人員數據安全的第一道防線。