今回はLinuxコマンドであるrmコマンドについて詳しく解説します。rmコマンドはディレクトリやファイルを削除するLinuxの基本コマンドです。しかし、使い方を間違えると重要なデータを失ってしまう可能性があります。安全で効率的な使い方をマスターして帰ってくださいね!
※注 本文の△は半角スペースに置き換えてください。わかりやすくするために△で記述してます
rmコマンドとは?
rmコマンドはディレクトリやファイルを削除するコマンドです。ファイル、フォルダを削除する際に使用します。「remove」を省略して「rm」になっています。
基本的な使い方
指定の仕方としては、「rm△ファイル名」と指定します(ディレクトリを削除する場合は「-r」か「-R」オプションを使用します)。また、ファイルを複数指定して削除することも可能です。
rm△[オプション]△ファイル名またはディレクトリ名

rm△ファイル名
rm△ファイル1△ファイル2△ファイル3
rm△-r△ディレクトリ名

rmコマンドの動作原理
rmコマンドは実際にはファイルシステムからファイルの参照を削除します。ファイルの内容がすぐに消去されるわけではなく、そのディスク領域が他のファイルによって上書きされるまでは、データ復旧ツールで復元できる場合があります。
rmコマンドの主なオプション一覧
オプション | 意味 |
---|---|
-f (--force) | ユーザへの確認を行わず強制的に削除する |
-i (--interactive) | 削除する前に削除OKか確認する |
-r,-R (--recursive) | サブディレクトリ含め、再帰的にディレクトリ全体を削除する |
-I (--Interactive) | 削除対象が4つ以上の場合のみ削除の確認をする |
-v (--verbose) | 削除処理を行う際の詳細情報を表示する |
-d (–dir) | 空のディレクトリを削除する |
–preserve-root | ルートディレクトリ(/)の削除を防ぐ |
–no-preserve-root | ルートディレクトリ(/)の削除を許可する |
–one-file-system | マウントポイントを超えて削除しない |
各オプションの詳細解説
-f (–force)
ユーザへの確認を行わず強制的に削除するオプションです。存在していないファイルも無視して削除処理を実行します。よくオプションは頭文字がつけられることが多いのですが、こちらは「force(強制)」の頭文字のfと覚えましょう。
rm△-f△ファイル名
rm△-f△存在しないファイル.txt # エラーが出ない

- 削除の確認がないため、誤削除のリスクが高い
- システムファイルを削除してしまう危険性がある
- 初心者は慎重に使用する
-i (–interactive)
削除する前に削除OKか確認するオプションです。削除する際に確認してくれるので、本来消したくないファイルを削除しないために有効なオプションです。「interactive(対話的)」のiです。
エイリアス機能というコマンドをひとまとめにできる機能があるのですが、「rm」だけで「rm△-i」を呼び出してくれる設定がしてある可能性があります。その場合「rm」コマンドのみでも「rm△-i」の働きをしてくれます。
「alias」コマンドを引数なしで実行することで、現在設定されているエイリアス機能を確認することが出来ます。「alias△rm△=’rm△-i’」と記載があったらrmコマンドのみでも「rm△-i」の働きをしてくれますよ。
rm△-i△ファイル名
# 実行すると「rm: remove regular file ‘ファイル名’? 」と表示される
# yまたはyesで削除、nまたはnoでキャンセル
alias△rm
# 「alias rm=’rm -i’」と表示されれば設定されている

-r,-R (–recursive)
サブディレクトリ含め、再帰的にディレクトリ全体を削除するオプションです。ディレクトリを消したい場合、「-r」「-R」オプションを使用しないと削除できません。
rm△-r△ディレクトリ名
rm△-R△ディレクトリ名 # -rと同じ効果
rm△-rf△ディレクトリ名 # 強制的に削除(確認なし)

# プロジェクトディレクトリ全体を削除
rm△-r△my_project/# 複数のディレクトリを一度に削除
rm△-r△dir1△dir2△dir3
-I (–interactive=once)
削除対象が4つ以上の場合のみ削除の確認をするオプションです。「-i」オプションの4つ以上バージョンのようなものです。
「*」はメタキャラクタと呼ばれる特殊文字で、直前の文字を0回以上繰り返します。「./」でカレントディレクトリを表すので、「./*」でカレントディレクトリ配下の全ファイルを指定して削除しています。また、「touch」コマンドはファイルを作成するコマンドです。
rm△-I△file1△file2△file3 # 3つなので確認なし
rm△-I△file1△file2△file3△file4 # 4つなので確認あり
rm△-I△./* # カレントディレクトリの全ファイル削除時に確認

-v (–verbose)
削除処理を行う際の詳細情報を表示するオプションです。「`ファイル名’ を削除しました」 と表示されます。どのファイルが削除されたかを確認できます。
rm△-v△ファイル名
# 出力例:「removed ‘ファイル名’」rm△-rv△ディレクトリ名
# 削除されるファイル一覧が表示される

-d (–dir)
空のディレクトリを削除するオプションです。rmdirコマンドと似た動作をします。
rm△-d△空のディレクトリ名
# 空でないディレクトリの場合はエラーになる
–preserve-root / –no-preserve-root
ルートディレクトリ(/)の削除に関する安全機能です。
rm△-rf△–preserve-root△/ # エラーになり削除されない(デフォルト)
rm△-rf△–no-preserve-root△/ # 危険:システム全体が削除される
–one-file-system
マウントポイントを超えて削除しないオプションです。異なるファイルシステムにあるファイルの誤削除を防ぎます。
rm△-rf△–one-file-system△/home/user/
# 他のマウントポイントのファイルは削除されない
実践的な使用例
1. ログファイルの定期削除
# 7日以上古いログファイルを削除
find△/var/log/△-name△”*.log”△-mtime△+7△-exec△rm△-f△{}△\;# 特定の拡張子のファイルを削除
rm△-f△*.tmp△*.bak△*.cache
2. 安全な一括削除
# 確認付きで複数ファイル削除
rm△-i△*.txt# 詳細表示付きで削除
rm△-rv△old_project/
3. 条件付き削除
# 空のファイルのみ削除
find△.△-type△f△-empty△-delete# 特定サイズ以下のファイルを削除
find△.△-type△f△-size△-1k△-exec△rm△-f△{}△\;
よく使われるオプションの組み合わせ
-rf の組み合わせ
最も危険だが、よく使われる組み合わせです。ディレクトリを強制的に削除します。
rm△-rf△ディレクトリ名
# 確認なしでディレクトリとその中身を全て削除
-riv の組み合わせ
安全で詳細な削除を行う組み合わせです。
rm△-riv△ディレクトリ名
# 各ファイルの削除を確認し、削除されたファイルを表示
-If の組み合わせ
4つ以上のファイルがある場合のみ確認を求める組み合わせです。
rm△-If△*
# 多数のファイルがある場合のみ一度だけ確認
rmコマンドの危険性と対策
危険な使用例
rm△-rf△/
# システム全体が削除されるrm△-rf△/*
# ルートディレクトリ以下全てが削除されるrm△-rf△.△.*
# 隠しファイルを含む現在ディレクトリの全てが削除される安全対策
1. aliasの設定
alias△rm=’rm△-i’ # 常に確認を求める
alias△rmi=’rm△-i’ # 明示的な確認付きrm
alias△rmf=’rm△-f’ # 強制削除(使用は慎重に)
2. 代替手段の使用
sudo△apt△install△trash-cli
trash△ファイル名 # ゴミ箱に移動# バックアップを取ってから削除
cp△-r△重要なディレクトリ△重要なディレクトリ.backup
rm△-rf△重要なディレクトリ
3. 確認の習慣
# 削除前にlsで確認
ls△-la△削除対象
rm△-i△削除対象
トラブルシューティング
よくあるエラーと対処法
1. 「Permission denied」エラー
# 原因:削除権限がない
# 対処法:権限を確認し、必要に応じてsudoを使用
ls△-la△ファイル名
sudo△rm△ファイル名
2. 「Directory not empty」エラー
# 原因:-rオプションなしでディレクトリを削除しようとした
# 対処法:-rオプションを使用
rm△-r△ディレクトリ名
3. 「No such file or directory」エラー
# 原因:指定したファイル・ディレクトリが存在しない
# 対処法:パスを確認、-fオプションでエラーを無視
ls△-la # 存在確認
rm△-f△存在しないファイル # エラーを無視
4. 「Device or resource busy」エラー
# 原因:ファイルが使用中
# 対処法:プロセスを終了してから削除
lsof△ファイル名 # 使用中のプロセスを確認
kill△プロセスID
rm△ファイル名
代替コマンドとの比較
rmdir コマンド
rmdir△空のディレクトリ # 空のディレクトリのみ削除可能
rm△-d△空のディレクトリ # 同等の機能
rm△-r△ディレクトリ # 中身があっても削除可能
unlink コマンド
unlink△ファイル名 # ファイルのリンクを削除(ファイルのみ)
rm△ファイル名 # 同等の機能
まとめ
rmコマンドはLinuxシステムにおいて非常に重要な基本コマンドですが、使い方を間違えると重大な結果を招く可能性があります。以下のポイントを押さえて安全に使用しましょう。
重要なポイント
- 安全第一: 常に-iオプションの使用を検討する
- 確認の習慣: 削除前にlsで対象を確認する
- バックアップ: 重要なデータは削除前にバックアップを取る
- 段階的実行: 一度に大量削除せず、段階的に実行する
- 権限の理解: ファイルの権限とアクセス制御を理解する
推奨される使用パターン
- 日常使用: rm -i または rm -I
- スクリプト内: rm -f(十分な検証後)
- ディレクトリ削除: rm -ri(安全性重視)
- 大量削除: rm -If(効率性重視)
rmコマンドを適切に使いこなすことで、Linuxシステムの管理が格段に効率化されます。常に安全性を最優先に考えながら、このパワフルなコマンドを活用してください。
mvコマンドとオプションが似ているのでmvコマンドも一緒に覚えてしまいましょう!



