ファイルまたはディレクトリを削除するために使用される場合、rm -rf
は何をしますか?
-r
オプションと-f
オプションはどのように連携しますか?
コマンドrm -rf
はrm -r -f
と同じです。
rm
のmanページ(端末でman rm
と入力して表示)から-r
は以下を行います:
remove directories and their contents recursively
そして、-f
は以下を行います:
ignore nonexistent files and arguments, never Prompt
したがって、組み合わせて両方を行います。
このコマンドは注意して使用してください!
前の正解に加えて、釣りの方法を教えたいと思います。
コマンドがどのように機能するのか、どのオプションが何をするのかわからない場合は、ターミナルを開いて入力します
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
rm
は削除の略です。 r
フラグはディレクトリとその内容を再帰的に削除するためのものであり、f
は強制を意味し、確認プロンプトを上書きします。
すでに述べたように、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
エラーが発生するはずです。
こちらもご覧ください: