rm — 刪除檔案與目錄
刪除檔案或目錄(不可復原,請謹慎使用)。
語法
rm [選項] 檔案...
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-r, -R, --recursive |
遞迴刪除目錄及其所有內容 | rm -r dir/ |
-f, --force |
強制刪除,忽略不存在的檔案,不詢問 | rm -f file |
-i, --interactive |
每次刪除前詢問確認 | rm -i file |
-I |
刪除 3 個以上檔案或遞迴刪除時才詢問一次 | rm -I *.log |
-v, --verbose |
顯示每個被刪除的檔案名稱 | rm -v file |
--no-preserve-root |
允許對 / 操作(極度危險,切勿使用) | (禁止) |
使用範例
範例 1:刪除單一檔案
直接刪除指定的檔案,操作不可復原。
$ rm temp.txt
範例 2:互動模式刪除(安全)
使用 -i 在每次刪除前詢問確認,適合刪除重要檔案前的確認操作。
$ rm -i important.conf
rm: remove regular file 'important.conf'?
輸入 y 確認刪除。建議習慣性使用 -i 避免誤刪。
範例 3:批次刪除符合條件的檔案
使用 glob 樣式刪除多個符合條件的檔案。
$ rm *.tmp
範例 4:遞迴刪除目錄
使用 -r 刪除整個目錄及其所有子目錄與檔案。此操作不可復原,務必確認路徑。
$ rm -r /tmp/build/
範例 5:強制遞迴刪除(謹慎!)
使用 -rf 強制刪除且不詢問,常用於清理無用的目錄。執行前務必確認路徑正確。
$ rm -rf ~/Downloads/old-project/
危險操作:路徑務必正確。切勿在 / 或 $HOME 等重要目錄上使用。
範例 6:顯示刪除過程
加上 -v 可看到每個被刪除的項目,適合確認刪除了哪些檔案。
$ rm -rv /tmp/cache/
removed '/tmp/cache/data.bin'
removed '/tmp/cache/index.db'
removed directory '/tmp/cache/'
常見錯誤與排錯
rm: cannot remove 'filename': No such file or directory
- 原因
- 指定的檔案不存在(可能已被刪除,或路徑有誤)。
- 解法
- 若不在乎檔案是否存在,加上 -f 選項可忽略此錯誤。
rm: cannot remove 'dirname': Is a directory
- 原因
- 嘗試刪除目錄但未加 -r 選項。
- 解法
- 使用 rm -r dirname/ 進行遞迴刪除。若只是空目錄,可改用 rmdir。
rm: cannot remove 'file': Permission denied
- 原因
- 對檔案或其所在目錄沒有寫入權限,或檔案設有不可刪除旗標。
- 解法
- 使用 sudo rm,或用 lsattr 確認是否有 i(immutable)旗標,再以 chattr -i 移除。
rm: it is dangerous to operate recursively on '/'
- 原因
- 嘗試對根目錄執行 rm -r,現代 Linux 工具已設保護阻止此操作。
- 解法
- 這是重要的安全機制,切勿繞過。再次確認目標路徑是否正確。