web-dev-qa-db-ja.com

rm -rfは何をしますか?

ファイルまたはディレクトリを削除するために使用される場合、rm -rfは何をしますか?

-rオプションと-fオプションはどのように連携しますか?

23
TellMeWhy

コマンドrm -rfrm -r -fと同じです。

rmのmanページ(端末でman rmと入力して表示)から-rは以下を行います:

remove directories and their contents recursively

そして、-fは以下を行います:

ignore nonexistent files and arguments, never Prompt

したがって、組み合わせて両方を行います。

実際、選択したディレクトリ内のすべてを再帰的に削除する(または選択したファイルを削除する)ため、非常に危険なコマンドであり、プロンプトを表示せずに削除します。

このコマンドは注意して使用してください!

51
user364819

前の正解に加えて、釣りの方法を教えたいと思います。

コマンドがどのように機能するのか、どのオプションが何をするのかわからない場合は、ターミナルを開いて入力します

man <command>

例えば:

man rm

そこに入ったら、オプションを検索できます。マニュアルページは非常に長く読むことができるため、ターミナルタイプでは:

/<pattern>

たとえば、次のようにします。

/-f

簡単に着陸できます:

-f, --force
              ignore nonexistent files and arguments, never Prompt

-r doの場合:

-r, -R, --recursive
              remove directories and their contents recursively

n(次)とN(前)を使用して、検索結果間を移動できます。

何かする必要があるが、コマンド名がわからない場合は、aproposを使用してmanページを検索してください。

apropos <pattern>

例えば:

apropos directory listing
22
Federico Ponzi

rmは削除の略です。 rフラグはディレクトリとその内容を再帰的に削除するためのものであり、fは強制を意味し、確認プロンプトを上書きします。

8
Chris

すでに述べたように、rm -rf <ARG>は、ファイルを再帰的に強制的に削除することを目的としています。ここで、<ARG>はディレクトリです(ただし、ファイルは問題ありません)。

-r(再帰的削除)の重要な点は、rmが使用する基本的なシステムコール( nlink )が空のディレクトリでのみ動作するため、rmが空でない場合、ディレクトリを削除できないことです。したがって、-rフラグは、 depth-first search がディレクトリに降りて最初にファイルを削除し、ディレクトリが空の場合にのみ削除します。これと同じ効果は、-deleteフラグを指定したfindコマンドによって実現されます(-typeによるフィルタリングを指定しない場合ですが、これは別の話です)。

-fに関しては、2つのことを行います-ファイルを削除するかどうかのプロンプトを防止します(ディレクトリ内から別のユーザーが所有するファイルを削除する場合、rm: remove write-protected regular empty file 'f1'?確認プロンプトは表示されません)、存在しないファイルを無視します。したがって、たとえば、存在しないファイル名では、rm: cannot remove 'nonexistent': No such file or directoryエラーが発生するはずです。

こちらもご覧ください:

2