Linux rm コマンド: 知っておくべきすべてのこと

公開: 2023-01-22
bash プロンプトを表示している Linux ラップトップ
Fatmawati achmad zaenuri/Shutterstock.com
rm コマンドを使用すると、「rm filename」または「rm -d directory」という名前を渡して、ファイルまたはディレクトリを削除できます。 ディレクトリ パスも含めることができます。 ディレクトリにファイルがある場合は、-r オプション "rm -r directory" を使用して、ファイルとフォルダを再帰的に削除します。

Linux rmコマンドは、ファイルとディレクトリを削除します。 このツールを安全に使用するには、「Enter」を押したときに何が起こるかを確認する必要があります。 知っておくべきことは次のとおりです。

目次

Linux の rm コマンドとは何ですか?
rm でファイルを削除する方法
rm でのワイルドカードの使用
対話的に rm を使用する
rm Force オプションの使用
rm によるディレクトリの削除
rm 使用時の間違いの回避
何のPPE?

Linux の rm コマンドとは何ですか?

Linux rmコマンドは、主にファイルを削除するためのものです。 これは、ほとんどの人が Linux を使い始めてすぐに遭遇するものです。 Linux の初心者であるという理由だけで、間違いを犯す可能性があります。 誤って、間違った名前で、または間違った場所にファイルを作成またはコピーします。 これはすべて、コマンド ラインの学習曲線の一部です。 このような間違いのクリーンアップ操作には、 rmが含まれます。

Linux で絶対に避けるべき 8 つのタイプミス
関連する Linux で絶対に避けるべき 8 つのタイプミス

rmコマンドは、ファイル、ファイルのグループ、ディレクトリ、または完全なディレクトリ ツリーを削除できます。 そのため、注意して使用する必要があります。 rmの使用は難しくありませんが、失敗した場合のペナルティは高くなります。

rmでファイルを削除すると、ファイルはなくなります。 ゴミ箱には移動されません。 すぐに抹消されます。 これは、 rmの使用を避けるべきだという意味ではありません。 ただし、安全に使用するには、その機能を認識し、適切に使用していることを確認する必要があります。

一部のツールは、他のツールよりも危険であり、間違いを許容しません。 そのため、 The Texas Wrench Massacreという映画はありませんでした。 rmはレンチではなく、間違いなくチェーンソーです。

人々はチェーンソーを毎日一日中使用していますが、責任を持って慎重に使用する限り問題ありません。 rmと同じ扱いです。 ツール バッグからrmを取り出すときは、速度を落としてコマンド ラインを確認してから再確認する必要があります。

rmコマンドは実行可能ファイルであり、シェルの一部ではありません。 したがって、ここでは Bash を使用していますが、これは標準の Linux rmであり、特別な Bash rmではありません。

関連:コマンドライン: なぜ人々はまだコマンドラインを気にするのですか?

rm でファイルを削除する方法

rmを使用する最も簡単な方法は、削除するファイルの名前を指定することです。

 rm config.gc 

ファイル名を rm に渡して単一のファイルを削除する

黙ってコマンド ラインに戻ります。 rmは、何も文句を言わなければ、要求したことを実行したと見なすことができるという、口を閉ざした古典的な Linux のスタンスを採用しています。 このようなファイル名を指定すると、 rmは現在の作業ディレクトリでファイルを探します。

コマンド ラインで複数のファイル名を指定できます。 削除するファイルが現在のディレクトリにない場合は、ディレクトリ パスを指定することもできます。

 rm memlog.sh /home/dave/dev-archive/config.gc 

ファイル名とディレクトリ パスを rm に渡して 2 つのファイルを削除する

ここでも、 rmが指定されたファイルを削除できた場合、何も報告されません。

関連:知っておくべき37の重要なLinuxコマンド

rm でのワイルドカードの使用

ワイルドカードを使用すると、コマンド ラインで個々のファイルを一覧表示しなくても、ファイルのグループまたはコレクションを指定できます。

アスタリスク「 * 」は、文字列がないことも含め、任意の文字列を表します。 クエスチョンマーク「 ? ” は、任意の 1 文字を表します。

ワイルドカードが期待どおりに一致することを確認するには、rm で使用する前に ls で使用します。

現在のディレクトリ内のすべての PNG ファイルを削除するには、「*.png」を使用します。 これは、「.png」が続く任意の文字シーケンスが一致することを意味します。 ファイルが削除されたら、 lsを使用してファイルが削除されたことを確認できます。

 ls *.png
 rm *.png
 ls *.png 

アスタリスク ワイルドカードを使用して、ファイル拡張子が PNG のすべてのファイルを削除する

テスト コンピューターでは、現在のディレクトリに "config" で始まる名前の 2 つのファイルがあります。

アスタリスクのワイルドカードを使用して、これらの両方を削除できます。 rmは「config」で始まり、その後に任意の文字列が続くファイル名を探しているため、両方のファイルに一致します。 1 つのファイルでは、その一連の文字はファイル名拡張子「.sl3」です。 もう 1 つのファイル名には「config」の後に文字がありませんが、アスタリスクは任意の文字または文字なしに一致するため、そのファイル名にも一致します。

 ls構成*
 RM構成*
 ls構成* 

アスタリスク ワイルドカードを使用して、ファイル拡張子のあるファイルとないファイルの 2 つのファイルを削除する

疑問符はペアで使用できます。 これにより、ファイル拡張子が正確に 2 文字のファイルが削除されます。

 ls *.??
 rm *.??
 ls *.?? 

2 つの疑問符ワイルドカードを使用して、ちょうど 2 文字のファイル拡張子を持つファイルを削除する

関連: Bash で知っておくべき 15 の特殊文字

対話的に rm を使用する

rmを使用する安全な方法は、各ファイルを削除する前に、強制的に確認を求めることです。 -i (対話型) オプションを使用すると、これを行うことができます。 このオプションをコマンド ラインに追加すると、削除するたびにrmからプロンプトが表示され、意図しないアクションを実行する機会が与えられます。

このコマンドでは-i (インタラクティブ) オプションを使用します。 単一文字のファイル拡張子を持つすべてのファイルを削除しようとします。

 rm -i *.? 

rm を対話的に使用して、各削除の前にプロンプ​​トを表示する

一致する各ファイルが順番に表示されます。 「y」または「Y」と答えると、ファイルは削除されます。 「n」と答えると、ファイルは保持されます。 実際、「y」または「y」以外で応答すると、ファイルは保持されます。 「Enter」を押すだけで、ファイルが保持されます。

ファイルのリストをすばやく処理し、ファイルを削除またはスキップして、削除したいファイルを選択できます。 i- (対話型) オプションを他のrmオプションと一緒に使用できることがわかります。

関連:開発者および愛好家向けの最高のLinuxラップトップ

rm Force オプションの使用

読み取り専用のファイルを削除しようとすると、 rmはファイルを削除する前に確認を求めます。 これは優れたセーフティ ネットですが、削除するファイルが多数ある場合は面倒になる可能性があります。

 rm geonames.sl3 

読み取り専用ファイルを削除するかどうかをユーザーに確認する rm プロンプト

-f (強制) オプションは、プロンプトを表示しないようにrmに指示します。 あなたは、「はい、あなたが通常私に尋ねるすべてのファイルを削除してください」と言っているのです。 また、 rmが存在しないファイルについて不平を言うのを防ぎます。

 rm -f geonames.sl3 

-f (強制) オプションを使用して、rm が削除に関するプロンプトを出さないようにする

-f (強制) オプションは、ネストされた一連のファイルとディレクトリを削除するときによく使用されます。

rm によるディレクトリの削除

rmコマンドは、必要に応じて、ディレクトリとそこに含まれるファイルを削除することもできます。 これはrmdirコマンドに似ていますが、 rmdirはファイルを含むディレクトリを削除できません。 空のディレクトリのみを削除します。 rmコマンドは、ファイルやその他のディレクトリを含むディレクトリを簡単に削除できます。

Linux ターミナルでファイルとディレクトリを削除する方法
関連Linux ターミナルでファイルとディレクトリを削除する方法

ディレクトリの削除は、ファイルの削除に似ています。 コマンドラインでディレクトリの名前を指定します。 -d (ディレクトリ) オプションを含める必要があります。 ファイルを削除したときと同様に、いくつかのディレクトリの名前を指定できます。 現在の作業ディレクトリにないディレクトリへのパスを指定できます。

 rm -d 古いプロジェクト

-d (ディレクトリ) オプションを使用してディレクトリを削除する

ディレクトリにファイルが含まれている場合、これは失敗します。

ディレクトリその内容を削除するには、 -r (再帰) フラグを使用します。 これにより、ディレクトリ、そのファイル、およびそれに含まれるネストされたディレクトリが削除されます。

 rm -d アーカイブ
rm -r アーカイブ

-r (再帰) オプションを使用してディレクトリとそのファイルを削除する

2 番目のコマンドは成功します。

rmを完全なチェーンソー モードに切り替えるには、 -r (再帰) オプションと-f (強制) オプションを組み合わせることができます。 これにより、 rmはディレクトリ ツリー内のすべてのファイルとディレクトリを再帰的に削除します。それらが読み取り専用であっても、プロンプトを表示することはありません。

テスト コンピューターには、"migrated code" という名前のディレクトリがあります。 ファイルと「6502」という別のディレクトリが含まれています。 「6502」ディレクトリには、ファイルと「ASM」と呼ばれる別のディレクトリも含まれています。 そのディレクトリにもファイルがあります。 一部のファイルは読み取り専用です。

-v (詳細) コマンドも含めて、 rmが何をしているかを教えてくれるようにします。

 rm -rfv 移行済みコード

-rfv フラグを使用して、プロンプトを表示せずに rm にファイルとディレクトリ (読み取り専用ファイルであっても) を削除させる

出力では、ファイルが削除されていることがわかります。ファイルが空の場合は、ディレクトリも削除されます。

-rfv フラグの出力は、削除されたファイルと、空になったときに削除されたディレクトリを示しています。

rm 使用時の間違いの回避

ファイル名にスペースやその他の奇妙な文字が含まれていると、問題が発生する可能性があります。 たとえば、ハイフン「 - 」で始まるファイル名は、コマンド ライン オプションと間違われる可能性があります。 「-contributors.txt」というファイルがある場合、 rmはその名前を一連のコマンド ライン オプションとして処理しようとします。

rmには「 -c 」というオプションがないため、コマンド ラインの解析は失敗し、ファイルは削除されません。 ファイルを削除するには、先頭に「./」を付けてパスを指定する必要があります。

 rm -contributors.txt
 rm ./-contributors.txt 

「./」を使用して、最初の文字がハイフンであるファイルを削除する問題を回避する

ファイル名のスペースも問題です。 ファイル名全体を引用するか、タブ補完を使用してファイル名をコマンドラインに挿入し、スペースをエスケープします。 これらのオプションのいずれも使用しない場合、 rmはファイル名の各部分を個別のファイルとして扱います。

Linux でファイル名のスペースを処理する方法
関連Linux でファイル名のスペースを処理する方法

ここには、「バックアップ」と呼ばれるファイルと「削除するバックアップ」と呼ばれるファイルの 2 つのファイルがあります。 lsを使用して、これらのファイル名の問題を示すことができます。 「削除するバックアップ」ファイルでlsを使用しようとして、ファイル名をエスケープまたは引用符で囲んでいない場合、コマンドは失敗します。

 ls -hl 削除するバックアップ

文字列を引用したりスペースをエスケープしたりせずに、名前にスペースが含まれるファイルで ls を使用しようとしています

lsは、「to」または「delete」という名前のファイルが見つからないと文句を言いますが、「backup」という名前のファイルは見つけます。 それはrmも行うことです。 2 つのファイルが見つからないというメッセージが表示され、"backup" という名前のファイルが削除されますが、これは私たちが望んでいたことではありません。

 削除するrmバックアップ

文字列を引用したりスペースをエスケープしたりせずに、名前にスペースが含まれるファイルで rm を使用しようとしています

rmは、「backup」、「to」、「delete」の 3 つのファイルを操作していると考えています。 「to」と「delete」が見つからないと文句を言いますが、「backup」を見つけて静かに削除します。

ファイル名を引用すると、 rmは正しいファイルを削除できます。

 rm '削除するバックアップ' 

ファイル名のスペースの問題を克服するために、引用符で囲まれたファイル名で rm を使用する

次のように、バックスラッシュ「 \ 」でスペースをエスケープすることもできます。

 rm バックアップ\ to\ 削除

ファイル名のスペースの問題を克服するために、スペースをエスケープしたファイル名で rm を使用する

タブ補完を使用してファイル名を入力すると、必要に応じて自動的にエスケープされます。

何のPPE?

実世界のチェーンソーとは異なり、 rmで使用できる個人用保護具はありません。

あなたができることは、 lsで構文をチェックしてからrmで試し、インタラクティブモードを使用して、何を削除するかを決定することです。

それ以外は、快適で自信が持てるまで練習です。 これを行う最も安全な方法は、大量の犠牲ファイルをディレクトリにコピーし、それらで練習することです。

関連: Linux で x 日以上経過したファイルを削除する