Linux / コマンド / rm / ファイルやディレクトリを削除するコマンド

Linuxのrmコマンドはファイルを削除し、-rオプションを使用するとディレクトリとその内容も削除されます。通常はごみ箱を経由しないため、コマンドを実行する前に削除するパスと項目を必ず確認してください。

削除前に確認すべきこと

この記事はGNU coreutilsのrmおよびBashシェルに基づいています。rmで削除されたファイルは、通常の方法では回復が難しい場合があります。重要なファイルは個別にバックアップし、pwdおよびls -laで現在の場所とターゲットを事前に確認してください。

rmは毎回確認メッセージを表示するわけではありません。デフォルトの動作は、ファイルの書き込み権限、入力がターミナルからかどうかなどに依存し、シェルのエイリアス設定も影響することがあります。各ファイルを明示的に確認するには-iを使用してください。詳細な条件についてはGNU rmマニュアルを参照してください。

ファイルの削除

以下は、新しい練習用ディレクトリを作成し、その中で削除するファイルを準備する例です。現在の場所にrm-practiceがすでに存在する場合は、別の空の場所を使用し、最初のコマンドが失敗した場合は、実行を続けないでください。

mkdir rm-practice
cd rm-practice
printf 'practice\n' > sample.txt
ls

sample.txtが表示されていることを確認した後、下記のコマンドを実行します。確認メッセージで、削除する場合はyを入力し、削除したくない場合はnを入力してください。

rm -i sample.txt
ls

削除を承認した場合、sample.txtはlsの結果には表示されなくなります。rm sample.txtは確認なしでファイルを削除できるため、常に確認メッセージが表示されるとは限らないことに注意してください。

ディレクトリの削除

空のディレクトリのみを削除するには、rmdir を使用できます。ディレクトリが空でない場合は通常失敗します。

mkdir empty-dir
rmdir empty-dir

内容を含むディレクトリを削除するには、-r を使用します。以下のコマンドは練習用のディレクトリとファイルを作成し、それらを確認した後に削除します。-i を併用すると、各項目の確認を求められます。

mkdir example-dir
printf 'practice\n' > example-dir/file.txt
ls -la example-dir
rm -ri example-dir

確認メッセージでは、ディレクトリの中を探索することやファイル・ディレクトリの削除について尋ねられることがあります。各質問に答える前に名前を確認し、削除するつもりの項目のみ承認してください。質問を拒否すると、ディレクトリが残るか、エラーが表示される場合があります。

ワイルドカードと隠しファイル

*.txt のようなパターンは、rm が実行される前に、シェルによって一致する名前に展開されます。複数のファイルを一度に削除する前に、削除コマンドではなく、次のようなコマンドで一致する名前を確認してください。

printf '%s\n' ./*.txt

出力された名前が意図したターゲットであることを確認した後、必要な場合にのみ rm -i ./*.txt を使用してください。一致するファイルがない場合、パターンはそのまま表示されるか、Bash の設定に応じてコマンドの動作が変わることがあります。パターン全体を引用符で囲むと、通常のファイル名展開が防止されます。

デフォルトのBash設定では、*はドットで始まる隠し項目を含みませんが、dotglobのような設定によって異なる場合があります。rm -rf *のように幅広く削除するコマンドは、現在の場所や展開結果を誤判断すると大きな被害を引き起こす可能性があります。各設定の違いはBashのファイル名展開ドキュメントで確認できます。

よく使用されるオプションとパス

  • -i: 削除する各項目を確認します。拒否された項目は削除されません。
  • -r: ディレクトリ内の内容を再帰的に削除します。
  • -f: 存在しないターゲットは無視し、確認メッセージを表示しないようにします。このオプションは権限エラーを解決するものではありません。
  • -v: 結果を確認するために、削除された項目を出力します。

スペースを含むパスは rm -i "my file.txt" のように引用符で囲む必要があります。ファイル名がハイフンで始まる場合、オプションとして解釈されないように -- の後に rm -i -- -draft.txt のように指定してください。

権限エラーが発生した場合は、対象の親ディレクトリに必要な権限があるか確認し、管理者に相談してください。削除が可能かどうかは、ファイル自体の書き込み権限だけで判断できるものではありません。削除後はディレクトリ一覧を再度確認し、必要なファイルを削除してしまった場合は、直ちに操作を中止し、運用環境のバックアップまたは復旧手順を確認してください。