## はじめに
`rm` コマンドはLinuxでファイルやディレクトリを削除するコマンドです。Windowsのゴミ箱と違い、**削除したファイルは基本的に復元できない**ため、特にサーバー環境での使用は細心の注意が必要です。
`rm -rf /` のような誤操作はシステム全体を破壊しかねません。しかし正しい知識と使い方を身につければ、安全かつ効率的にファイル管理ができます。本記事では安全な削除方法とベストプラクティスを解説します。
## 症状・背景
`rm` コマンドが必要になる主な場面:
– 不要になったログファイルやテンポラリファイルを削除したい
– ディレクトリごと削除したい
– 古いバックアップファイルをまとめて削除したい
– `rm -rf` を安全に使いたい
## 手順・設定方法
### ステップ1: 基本的なファイル削除
“`bash
# ファイルを削除
rm file.txt
# 複数ファイルを削除
rm file1.txt file2.txt file3.txt
# ワイルドカードで削除(注意:実行前に ls で確認推奨)
ls *.log # まず確認
rm *.log # 確認後に削除
“`
### ステップ2: ディレクトリの削除
“`bash
# 空のディレクトリを削除(rmdirの代替)
rm -d emptydir/
# ディレクトリを中身ごと再帰削除(-r: recursive)
rm -r /tmp/myapp/
# 確認なしで強制削除(-f: force)
rm -f locked_file.txt
# 再帰+強制削除(最もよく使われる組み合わせ)
rm -rf /tmp/build_cache/
“`
### ステップ3: 安全な削除のベストプラクティス
“`bash
# ① 削除前に必ずlsで確認
ls -la /var/log/app/
rm -rf /var/log/app/old_logs/
# ② 確認プロンプト付きで削除(-i: interactive)
rm -i important_file.txt
# ③ 3つ以上のファイルを削除する際は確認(-I)
rm -I *.conf
# ④ echo でコマンドを確認してから実行
echo rm -rf /tmp/old/ # → 実際には削除せず表示だけ
rm -rf /tmp/old/ # → 確認後に実行
# ⑤ 変数展開の危険性を避ける($変数が空の場合の対策)
TARGET=”/tmp/cache”
[ -n “$TARGET” ] && rm -rf “$TARGET” # -n: 空でないことを確認
“`
### ステップ4: ゴミ箱代替ツールの活用
“`bash
# trash-cliをインストール(Ubuntu/Debian)
sudo apt install trash-cli
# ファイルをゴミ箱に移動(復元可能)
trash-put file.txt
# ゴミ箱の中身を確認
trash-list
# ゴミ箱を空にする
trash-empty
# .bashrcでrmをtrashに置き換えるエイリアス設定
echo “alias rm=’trash-put'” >> ~/.bashrc
source ~/.bashrc
“`
## 注意事項
– **`rm -rf /` は絶対に実行しない**。`–no-preserve-root` オプションがない限り保護されているが、`rm -rf /*` は保護対象外で全ファイルが削除される
– 変数を使った `rm -rf $DIR/` は `$DIR` が空の場合に `rm -rf /` と同等になる危険がある。必ず変数の内容を確認してから実行すること
– 本番サーバーでの大量削除前はバックアップを確認し、可能であればステージング環境でテストする
– rootユーザーで作業する際は特に慎重に。一般ユーザーで作業できる範囲はそちらで対応する
## まとめ
1. **基本削除**: `rm file.txt` でファイルを削除(復元不可)
2. **ディレクトリ削除**: `rm -rf dir/` で中身ごと削除
3. **安全確認**: `rm -i` で削除前に確認プロンプト
4. **事前確認**: `ls` で対象ファイルを確認してから削除実行
5. **ゴミ箱活用**: `trash-cli` で誤削除を防止(開発・学習環境推奨)
関連記事:
– [mvコマンドでファイルを移動・リネームする方法](../0703-linux-mv-command/)
– [findコマンドでファイルを検索する方法](../0705-linux-find-command/)
– [cpコマンドでファイルをコピーする方法](../0702-linux-cp-command/)







