Linux rm 指令:rm -rf 選項與不經確認直接刪除的方法

rm 指令刪除的檔案不會經過回收桶,而是直接刪除。rm 是 remove 的縮寫,用來刪除檔案與目錄;本文整理了基本用法與選項,以及執行 [rm -rf /] 後根目錄仍會留下的原因。
AlmaLinux 9.8 的 root 帳號預設就有 [alias rm=’rm -i’],所以刪除前會詢問確認。針對沒有這項設定的 Linux 作業系統,本文也一併說明了自行加入別名的方法。
✅ 基本使用方法
基本用法如下。
rm -選項 要刪除的 檔案 或 目錄
檔案只要寫出名稱就會被刪除,目錄則要加上 -r 選項才能刪除。
# 刪除檔案
rm file1
# 刪除多個檔案
rm file1 file2
# 刪除目錄及其中所有內容
rm -r dir1/
# 刪除空目錄
rm -d dir1/~]# rm dir1/
rm: cannot remove 'dir1/': Is a directory沒有加選項就指定目錄的話,會像上面這樣無法刪除。
刪除符號連結時,只會刪掉連結本身,連結指向的目標檔案仍會保留。刪除前後,可以搭配 ls 指令一起確認。
✅ rm -rf:不經確認直接刪除
執行 rm 指令時會詢問 [remove regular file],這是因為在 root 帳號中,rm 是以 [rm -i] 別名(alias)執行的。
~]# rm file1
rm: remove regular file 'file1'? y
~]# alias rm
alias rm='rm -i'用 -r 選項刪除目錄時,進入目錄時和每個檔案都會詢問確認,檔案越多就越麻煩。
~]# rm -r logs/
rm: descend into directory 'logs/'? y
rm: remove regular file 'logs/access.log'? y
rm: remove regular empty file 'logs/error.log'? y
rm: remove directory 'logs/'? y這時只要再加上 -f 選項,就會不經確認直接刪除,即使指定了不存在的檔案也不會出現錯誤。
rm -rf logs/在指令前加上反斜線 [\] 來略過別名,或在前面加上 [yes |],讓每次確認都自動輸入 y,也會得到同樣的結果。
\rm -r logs/
yes | rm -r logs/✅ rm 指令選項 & 模擬器
| 選項 | 說明 | |
|---|---|---|
| -f | --force不經確認直接刪除,指定不存在的檔案也不會出現錯誤 | |
| -i | 每次刪除前都向使用者要求確認alias rm='rm -i' | |
| -I(大寫 i) | 檔案有 4 個以上,或與 -r 一起使用時,只確認一次 | |
| -r, -R | --recursive刪除目錄及其中的子目錄與檔案 | |
| -d | --dir刪除空目錄 | |
| -v | --verbose逐行列出已刪除的檔案與目錄 | |
| --preserve-root | 不刪除根目錄(/)(預設值) | |
| --no-preserve-root | 解除根目錄(/)的保護 |
✅ rm -rf / 防止刪除根目錄
從事主機相關工作時,難免會刪掉不該刪的檔案。大多數都能用備份檔還原,但如果刪掉的是根目錄,即使有快照,還原起來也很麻煩。實際上也曾好幾次聽說誤執行 rm -rf 指令而無法復原的案例。
rm 指令預設套用 [--preserve-root] 選項,所以即使執行 [rm -rf /],根目錄也不會被刪除。
~]# rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe但是 [rm -rf /*] 就擋不住了。Shell 會先把 [/*] 換成 /bin、/etc、/home 這類目錄名稱再傳過去,所以 rm 指令刪除的不是 [/],而是各個目錄。
安裝 AlmaLinux 9.8 後,[/root/.bashrc] 中就有 rm、cp、mv 指令的 -i 別名,如下所示。一般使用者帳號沒有這些別名。
~]# grep alias /root/.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'在沒有別名的帳號或 Linux 作業系統上,只要在 [~/.bashrc] 最下方加入一行,再重新載入即可。
# 加到 ~/.bashrc 最下方
alias rm='rm -i'
# 重新載入
source ~/.bashrc
ℹ️ 聯盟行銷說明
本站內容包含聯盟行銷連結。訪客透過這些連結購買商品或服務時,本站會從賣家獲得佣金。在這個過程中,購買者支付的金額(遇到活動折扣時金額會降低↓)並不會因此提高。刊登的價格、折扣與庫存資訊以撰寫當時為準,可能與實際情況不同,購買前請向賣家做最後確認。商品的挑選與評價依本站自訂的標準撰寫,是否支付佣金不會影響介紹順序或評價內容。