はじめに

こんにちは!今回はrmコマンドについて解説します。

rmはファイルやディレクトリを削除(remove)するコマンドです。超便利ですが、元に戻せないので要注意!

上手に使えば問題ないですが、rm -rf /みたいなのは絶対ダメ。やったら終わりです。

rmコマンドとは

rmは、ファイルやディレクトリを削除する外部コマンドです。“remove"の略ですね。

削除したファイルはゴミ箱に入らず、即座に消えます。復元は基本的に不可能なので、慎重に使いましょう。

基本構文

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

主なオプション

オプション 説明
-i 削除前に確認(interactive)
-f 強制削除、エラーを無視(force)
-r, -R ディレクトリを再帰的に削除
-d 空のディレクトリを削除
-v 詳細表示(verbose)
--preserve-root ルートディレクトリの削除を防ぐ(デフォルト)
--no-preserve-root ルートディレクトリの削除を許可(危険!)

使用例

例1: ファイルを削除

1
rm file.txt

実行結果:

1
(成功時は何も表示されない)

file.txtを削除します。最も基本的な使い方です。

例2: 複数ファイルを削除

1
rm file1.txt file2.txt file3.txt

実行結果:

1
(成功時は何も表示されない)

複数のファイルを一度に削除します。

例3: 確認付きで削除(-i)

1
rm -i important.txt

実行結果:

1
rm: remove regular file 'important.txt'?

削除前に確認してくれます。削除する場合はy、キャンセルする場合はnを押します。超重要なオプション!

例4: ワイルドカードで削除

1
rm *.txt

実行結果:

1
(成功時は何も表示されない)

すべての.txtファイルを削除します。慎重に使いましょう!

例5: 空のディレクトリを削除

1
rm -d empty_folder

実行結果:

1
(成功時は何も表示されない)

または:

1
rmdir empty_folder

空のディレクトリを削除します。

例6: ディレクトリを再帰的に削除

1
rm -r folder

実行結果:

1
(成功時は何も表示されない)

folderとその中身をすべて削除します。元に戻せないので要注意!

例7: 強制削除(-f)

1
rm -f protected_file.txt

実行結果:

1
(成功時は何も表示されない)

書き込み保護されたファイルも確認なしで削除します。危険なので慎重に!

例8: 詳細表示(-v)

1
rm -v file1.txt file2.txt

実行結果:

1
2
removed 'file1.txt'
removed 'file2.txt'

削除したファイルを表示してくれます。

例9: ディレクトリを確認付きで削除

1
rm -ri folder

実行結果:

1
2
3
4
rm: descend into directory 'folder'? y
rm: remove regular file 'folder/file1.txt'? y
rm: remove regular file 'folder/file2.txt'? y
rm: remove directory 'folder'? y

ディレクトリ内の各ファイルごとに確認してくれます。安全ですね!

例10: バックアップファイルを一括削除

1
rm *~ *.bak

実行結果:

1
(成功時は何も表示されない)

バックアップファイル(~.bakファイル)を削除します。

例11: 古いログファイルを削除

1
rm -v old_*.log

実行結果:

1
2
removed 'old_2024_01.log'
removed 'old_2024_02.log'

パターンに一致するログファイルを削除します。

例12: ディレクトリを強制削除

1
rm -rf temp_folder

実行結果:

1
(成功時は何も表示されない)

temp_folderとその中身を確認なしですべて削除します。最も危険なコマンドの一つ。めっちゃ注意!

Tips・注意点

⚠️ 削除は永久的

1
2
3
4
5
# 実行したら終わり
rm important_file.txt

# ゴミ箱には入らない!
# 復元はほぼ不可能!

削除したファイルは基本的に復元できません。バックアップは必須!

-iを習慣にする

1
2
# 常に確認付きで削除
alias rm='rm -i'

これを~/.bashrcに設定すると、常に確認してくれます。初心者は絶対これ!

危険なコマンド

1
2
3
4
5
# 絶対にやっちゃダメ!
rm -rf /           # システム全体を削除
rm -rf /*          # システム全体を削除
rm -rf ~/*         # ホームディレクトリ全体を削除
rm -rf ./*         # カレントディレクトリを削除(場所によっては危険)

これらのコマンドは絶対に実行しないでください。システムが壊れます。

スペースに注意

1
2
3
# 危険!
rm -rf /tmp /important   # /tmpと/importantを削除(OK)
rm -rf /tmp / important  # /tmpと/(ルート)を削除(大惨事!)

スペースの位置を間違えるとシステムが壊れます。

ワイルドカードは事前確認

1
2
3
4
5
# まずlsで確認
ls *.txt

# 問題なければ削除
rm *.txt

ワイルドカードを使う前に、必ずlsで確認しましょう。

ディレクトリ削除の代替手段

1
2
3
4
5
# 空ディレクトリの削除(安全)
rmdir empty_folder

# 中身ごと削除(意図が明確)
rm -r folder

ゴミ箱的な使い方

1
2
3
4
5
6
7
8
# ゴミ箱ディレクトリを作成
mkdir -p ~/.trash

# 削除の代わりに移動
mv unwanted_file.txt ~/.trash/

# 定期的に空にする
rm -rf ~/.trash/*

強制再帰削除は避ける

1
2
3
4
5
6
# 危険
rm -rf folder

# より安全
rm -r folder        # 保護されたファイルで止まる
rm -ri folder       # 確認付き

-f-rの組み合わせは特に危険です。

実践的な使い方

開発環境のクリーンアップ

1
2
3
4
5
# ビルド成果物を削除
rm -rf build/ dist/ *.pyc __pycache__/

# node_modulesを削除
rm -rf node_modules/

ログファイルの管理

1
2
3
4
5
# 古いログを削除(7日以上前)
find /var/log -name "*.log" -mtime +7 -exec rm {} \;

# または
find /var/log -name "*.log" -mtime +7 -delete

一時ファイルの削除

1
2
3
4
5
# 一時ファイルを一括削除
rm -f /tmp/myapp_*

# キャッシュをクリア
rm -rf ~/.cache/myapp/

安全な削除スクリプト

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
# safe_rm.sh - 確認付き削除スクリプト

if [ $# -eq 0 ]; then
    echo "使い方: $0 <削除するファイル>" >&2
    exit 1
fi

for file in "$@"; do
    if [ -e "$file" ]; then
        echo "対象: $file"
        ls -lh "$file"
        read -p "本当に削除しますか? (yes/no) " answer
        if [ "$answer" = "yes" ]; then
            rm -v "$file"
        else
            echo "スキップ: $file"
        fi
    else
        echo "見つかりません: $file"
    fi
done

プロジェクトのクリーンアップ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
# プロジェクトディレクトリをクリーンアップ

echo "ビルド成果物を削除中..."
rm -rf build/ dist/ *.egg-info/

echo "キャッシュファイルを削除中..."
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null
find . -type f -name "*.pyc" -delete

echo "完了!"

バックアップ付き削除

1
2
3
4
5
# 削除前にバックアップ
backup_dir="/backup/$(date +%Y%m%d)"
mkdir -p "$backup_dir"
cp -a important_folder "$backup_dir/"
rm -rf important_folder

まとめ

rmコマンドのポイント:

  • ファイル・ディレクトリを永久削除
  • -i: 削除前に確認(必須!)
  • -r: ディレクトリを再帰的に削除
  • -f: 強制削除(危険!)
  • -v: 詳細表示
  • 削除は元に戻せない
  • rm -rfは特に危険
  • よく使う組み合わせ: rm -i, rm -ri, rm -v

重要: rmに「元に戻す」はありません。-iを習慣にして、削除前に必ず確認しましょう。バックアップも忘れずに!