rm(削除)
100%

コマンドライン · レッスン 13

rm(削除)

対象を確認して安全な `rm` オプションを選び、ファイルやディレクトリを削除する方法を学びます。

rm コマンドはファイルシステムのエントリを削除します。コマンドラインでの削除は通常、項目をデスクトップのゴミ箱へ送りません。また rm に組み込みの undo はないため、実行前にすべての対象を確認してください。

基本構文は次のとおりです。

rm [OPTIONS] FILE...

ファイルを削除する

1 つ以上のファイルパスを rm に渡します。

$ rm file1
$ rm notes.txt old-report.txt draft.md

Enter を押す前に綴りと場所を確認してください。削除後にファイルシステム復旧ツールへ頼るより、バックアップやバージョン管理のコピーの方が確実な復旧手段です。

対象を確認した後、old-report.txt を削除するコマンドはどれですか?

ワイルドカードの対象を事前確認する

シェルはワイルドカードを複数のオペランドへ展開できます。たとえば *.tmp は現在のディレクトリにある、一致する隠しファイル以外の名前を選びます。

$ rm *.tmp

削除前に、同じ引用符なしのパターンを ls で確認します。

$ ls *.tmp
cache.tmp  test.tmp
$ rm *.tmp

シェルは rm が始まる前にパターンを展開します。確認結果に予期しないファイルが含まれていたら、そのまま進めずパターンを修正してください。

*.tmp の削除を予定しています。削除せず、パターンが選ぶ隠しファイル以外のパス名を先に表示するコマンドはどれですか?

確認を求める

-i オプションは各削除の前に尋ねます。

$ rm -i important.txt
rm: remove regular file 'important.txt'? y

GNU rm-I は、より簡潔な安全策です。3 ファイルより多く削除する場合や、再帰操作の場合に一度だけ尋ねます。

指定した各ファイルを削除する前に確認を求めるコマンドはどれですか?

`-f` で存在しないファイルを無視する

-f オプションは存在しないオペランドを無視し、プロンプトを抑止します。

$ rm -f old-cache.txt

生成ファイルがすでにない可能性のあるスクリプトでは、クリーンアップを何度実行しても同じ結果にできます。確認がなくなるため、理解していないエラーを消すためだけに -f を追加しないでください。

ディレクトリを削除する

通常の rm はディレクトリを削除しません。

$ rm projects
rm: cannot remove 'projects': Is a directory

ディレクトリツリーとその全内容を削除する意図がある場合にだけ、-r または -R を使います。

$ rm -r old-project

空のディレクトリには、対象を限定できる rmdir があります。

$ rmdir empty-directory

rmdir はディレクトリが空でなければ失敗するため、再帰的な削除から内容を守れます。

old-cache/ が空の場合だけ、そのディレクトリを削除するコマンドはどれですか?

再帰削除を確認する

再帰削除はツリー全体を消去できます。-r-f を組み合わせるとプロンプトもなくなるため、rm -rf では対象を特に慎重に検証してください。再帰削除の前に次を確認します。

  • 想定したディレクトリにいるか。pwd を使う
  • ls -ld -- TARGET が意図した最上位パスを示すか
  • ワイルドカードがある場合、読み取り専用の確認が期待どおりに一致したか
  • パスが絶対か相対か。/tmp/cachetmp/cache は大きく異なる
  • 誤った空白がないか。rm -rf old-projectrm -rf old project は異なるパスを対象にする

ハイフンで始まる可能性のある対象の前には、オプションと解釈されないよう -- を使います。

$ rm -- -old-name

rm がパーミッションエラーを報告したという理由だけで sudo を使わないでください。まず対象を確認し、自分のアカウントが親ディレクトリを変更できない理由を調べます。権限を高めた再帰削除は、オペレーティングシステムやほかのユーザーのデータを損傷させる可能性があります。

成功した各削除を rm に報告させるには -v を使います。

$ rm -rv old-project
removed 'old-project/notes.txt'
removed directory 'old-project'

完全な対象を確認した後、通常のプロンプトを残しながら old-project/ とその下のすべてを削除するコマンドはどれですか?

レッスン完了

rm(削除) を完了しました

これで、すべての対象を元に戻せないものとして扱いながら、ファイルシステムのエントリを削除できるようになりました。

  • 削除前にファイルのパス名を確認する。

  • 読み取り専用コマンドでワイルドカード展開を事前確認する。

  • -i または -I で確認を求める。

  • ディレクトリが空でなければならない場合は rmdir を優先する。

  • 再帰削除の前に対象全体を検証する。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
コマンドライン に戻る