rmでファイルを削除する

rmでファイルを削除する とは

rmコマンドを使って、ファイルやディレクトリを削除する方法を実際に操作します。本レッスンでは、rmでファイルを削除する の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

rm は取り消し効かない削除コマンドです。一時ファイルの掃除、古いログの片付け、テストデータの破棄など利用頻度は高いものの、たった一文字の打ち間違いで本番データが消える事故が後を絶ちません。本レッスンでは確実な使い方と、絶対にやってはいけないパターンを押さえます。

クラウド時代でも「rm -rf で本番のデータを丸ごと消した」というインシデントは定期的に話題になります。rm はゴミ箱を経由せず即座にデータへのリンクを外すため、バックアップが無ければ復旧は極めて困難です。だからこそ、このレッスンでは「安全に消す習慣」を最優先で身につけます。

基本構文

ターミナル

rm [オプション] ファイル名 [ファイル名 ...]

主要オプションは下記のとおりです。

オプション役割
-i1ファイルごとに確認
-I3ファイル以上 / 再帰のみ確認
-rディレクトリを再帰削除
-f強制(確認しない / 存在しなくてもエラーにしない)
-v何を消したか表示
-d空ディレクトリを削除

動作の図解

diagram (will load when visible)

代表例

ターミナル

# ファイル単発削除 $ cd /tmp && touch tmp.txt $ rm tmp.txt $ ls tmp.txt 2>&1 | head -1 ls: cannot access 'tmp.txt': No such file or directory

ターミナル

# ディレクトリごと削除(-r 必要) $ cd /tmp && mkdir -p junk/sub && touch junk/sub/x.txt $ rm -r junk $ ls junk 2>&1 | head -1 ls: cannot access 'junk': No such file or directory

ターミナル

# 拡張子でまとめて掃除 $ cd /tmp && touch a.log b.log c.log $ rm *.log $ ls *.log 2>&1 | head -1 ls: cannot access '*.log': No such file or directory

ターミナル

# 確認しながら消す rm -i /tmp/important.txt

危険な書き方とその回避

rm -rf / rm -rf ~/* は壊滅的ダメージにつながる典型例です。誤入力対策は次の通りです。

  • 削除対象を ls で先に確認する
  • rm -irm -I を癖にする
  • スクリプトでは絶対パスを使い、変数展開を二重引用符で囲う
  • 重要データは rm ではなく一旦 mv でゴミ箱代わりのディレクトリに送る
  • グロブ * を使う前に同じ条件で ls を打って中身を確認する

ターミナル

# 二重引用符で安全に TARGET="/tmp/build_artifacts" rm -rf "$TARGET"

変数が空のときに rm -rf "$TARGET"/ のように書いてしまうと rm -rf / 相当になる、という事故も有名です。空チェックを挟むと安全度が上がります。

ターミナル

if [ -n "$TARGET" ] && [ -d "$TARGET" ]; then rm -rf "$TARGET" fi

rm で消したファイルは Linux のゴミ箱には行かず、復元はバックアップが無ければ非常に困難です。打つ前に ls で確認する一拍が事故を防ぎます。

rm -rf を打つ前に深呼吸する、これは新人もベテランも同じです。慎重さは経験で減らない、というのが正解です。

安全な「ゴミ箱化」テクニック

ターミナル

mkdir -p /tmp/trash mv 削除候補.txt /tmp/trash/ # 数日後にまとめて消す

この方が誤削除のとき復元しやすく、rm の一発勝負を回避できます。デスクトップ環境では trash-cli のようなツールでゴミ箱経由の削除も可能です。

find と組み合わせるときの注意

古いファイルの一括削除は find と組み合わせますが、本実行前に必ず -print で対象を確認します。

ターミナル

# まず確認 find /tmp -name '*.tmp' -mtime +7 -print # 問題なければ削除 find /tmp -name '*.tmp' -mtime +7 -delete

やってみよう

演習エディタでファイルを作り、rm で削除して ls で消えたことを確認しましょう。rm -r でディレクトリごと消すパターンもぜひ試してください。

まとめ

  • rm取り消し不可 の削除コマンド
  • ディレクトリには -r が必要
  • 本番では -i -I で確認、変数は引用符で守る
  • 重要データは mv で待避してから rm する運用が安全
  • find での一括削除は -print で対象確認してから -delete

次のレッスン

次は ファイルシステムチェック で、rmコマンドを使って、ファイルやディレクトリを削除する方法を実際に操作します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. rm コマンド の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. rm コマンド とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

課題

  1. rm を使う
  2. erase.txt を削除する
  3. keep.txt のみが残る

ヒント

script.sh
script.sh
学習モード
script.sh
ターミナル出力