Linux rmコマンド: rm -rfオプションと確認なしで削除する方法

rmコマンドで削除したファイルは、ごみ箱を経由せずにすぐ消えます。rmはremoveの略で、ファイルとディレクトリを削除します。この記事では、基本的な使い方とオプション、[rm -rf /]を実行してもルートディレクトリが残る理由をまとめました。
AlmaLinux 9.8では、rootアカウントに[alias rm='rm -i']が最初から入っており、削除の前に確認を求めます。この設定がないLinux OSのために、エイリアスを自分で入れる方法もあわせて扱いました。
✅ 基本的な使い方
基本的な使い方は次のとおりです。
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]エイリアスとして実行されるためです。
~]# 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と一緒に使うときに1回だけ確認 | |
| -r, -R | --recursiveディレクトリとサブディレクトリ、ファイルまですべて削除 | |
| -d | --dir空のディレクトリを削除 | |
| -v | --verbose削除したファイルとディレクトリを1行ずつ表示 | |
| --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 /*]は防げません。シェルが[/*]を/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 OSでは、[~/.bashrc]の末尾に1行を追加して読み込み直せば済みます。
# ~/.bashrc の末尾に追加
alias rm='rm -i'
# 再読み込み
source ~/.bashrc
ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。