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

聯盟行銷揭露 Ver 3.1
聯盟行銷揭露 Ver 3.2(僅限行動版)
測試環境RHEL 系列AlmaLinux 9.8root 帳號2026-10-05 確認

rm 指令刪除的檔案不會經過回收桶,而是直接刪除。rm 是 remove 的縮寫,用來刪除檔案與目錄;本文整理了基本用法與選項,以及執行 [rm -rf /] 後根目錄仍會留下的原因。

AlmaLinux 9.8 的 root 帳號預設就有 [alias rm=’rm -i’],所以刪除前會詢問確認。針對沒有這項設定的 Linux 作業系統,本文也一併說明了自行加入別名的方法。

✅ 基本使用方法

基本用法如下。

rm -選項 要刪除的 檔案 或 目錄
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 指令模擬器alias rm='rm -i'
[root@server work]#
只在瀏覽器中運作,不會動到實際的檔案。請換用不同的 rm 選項輸入,再用 ls、cat 確認結果。刪除的檔案按下 [重新開始] 就會回來。用鍵盤 ↑↓ 可以叫出之前輸入過的指令,輸入 uknew help 會列出可用的指令。

✅ 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
linux Free Software

ℹ️ 聯盟行銷說明
本站內容包含聯盟行銷連結。訪客透過這些連結購買商品或服務時,本站會從賣家獲得佣金。在這個過程中,購買者支付的金額(遇到活動折扣時金額會降低↓)並不會因此提高。刊登的價格、折扣與庫存資訊以撰寫當時為準,可能與實際情況不同,購買前請向賣家做最後確認。商品的挑選與評價依本站自訂的標準撰寫,是否支付佣金不會影響介紹順序或評價內容。