はじめに#
こんにちは!今回はrmコマンドについて解説します。
rmはファイルやディレクトリを削除(remove)するコマンドです。超便利ですが、元に戻せないので要注意!
上手に使えば問題ないですが、rm -rf /みたいなのは絶対ダメ。やったら終わりです。
rmコマンドとは#
rmは、ファイルやディレクトリを削除する外部コマンドです。“remove"の略ですね。
削除したファイルはゴミ箱に入らず、即座に消えます。復元は基本的に不可能なので、慎重に使いましょう。
基本構文#
主なオプション#
| オプション |
説明 |
-i |
削除前に確認(interactive) |
-f |
強制削除、エラーを無視(force) |
-r, -R |
ディレクトリを再帰的に削除 |
-d |
空のディレクトリを削除 |
-v |
詳細表示(verbose) |
--preserve-root |
ルートディレクトリの削除を防ぐ(デフォルト) |
--no-preserve-root |
ルートディレクトリの削除を許可(危険!) |
使用例#
例1: ファイルを削除#
実行結果:
file.txtを削除します。最も基本的な使い方です。
例2: 複数ファイルを削除#
1
|
rm file1.txt file2.txt file3.txt
|
実行結果:
複数のファイルを一度に削除します。
例3: 確認付きで削除(-i)#
実行結果:
1
|
rm: remove regular file 'important.txt'?
|
削除前に確認してくれます。削除する場合はy、キャンセルする場合はnを押します。超重要なオプション!
例4: ワイルドカードで削除#
実行結果:
すべての.txtファイルを削除します。慎重に使いましょう!
例5: 空のディレクトリを削除#
実行結果:
または:
空のディレクトリを削除します。
例6: ディレクトリを再帰的に削除#
実行結果:
folderとその中身をすべて削除します。元に戻せないので要注意!
例7: 強制削除(-f)#
1
|
rm -f protected_file.txt
|
実行結果:
書き込み保護されたファイルも確認なしで削除します。危険なので慎重に!
例8: 詳細表示(-v)#
1
|
rm -v file1.txt file2.txt
|
実行結果:
1
2
|
removed 'file1.txt'
removed 'file2.txt'
|
削除したファイルを表示してくれます。
例9: ディレクトリを確認付きで削除#
実行結果:
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: バックアップファイルを一括削除#
実行結果:
バックアップファイル(~や.bakファイル)を削除します。
例11: 古いログファイルを削除#
実行結果:
1
2
|
removed 'old_2024_01.log'
removed 'old_2024_02.log'
|
パターンに一致するログファイルを削除します。
例12: ディレクトリを強制削除#
実行結果:
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を習慣にして、削除前に必ず確認しましょう。バックアップも忘れずに!