rm -rf
ファイルまたはディレクトリの削除に使用するとどうなりますか?
-r
と-f
オプションはどのように連携しますか?
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
したがって、組み合わせて両方を行います。
このコマンドは注意して使用してください!
rm -rf /
理論的には、書き込み権限があるディレクトリにあるコンピューター上のすべてのファイルを削除します。あなたがrootなら、それはシステム全体を一掃することを意味します。(実際には、GNUにrm
は、rm -r /
あなたも言わない限り許可を拒否する特別なケースがあるため、機能しません--no-preserve-root
。)
rm -rf /
それでも同じように、適切にキャッチされたかどうかを確認することはお勧めしません。
前の正解に加えて、釣り方を教えたいと思います。
コマンドがどのように機能するのか、どのオプションが何をするのかわからない場合は、ターミナルを開いて入力します
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 -rf <ARG>
がどこにあるかを強制的に再帰的にファイルを削除することを意味します<ARG>
(ただし、ファイルは問題ありません)。
-r
(再帰的削除)の全体のポイントはrm
、単にrm
(unlink)を使用する基になるシステムコールが空のディレクトリでのみ動作するため、ディレクトリが空でない場合、ディレクトリを削除できないことです。したがって、-r
フラグが行うことは、深さ優先検索がディレクトリに降りて最初にファイルを削除し、次にディレクトリが空の場合にのみ-それが削除されます。この同じ効果はfind
、-delete
フラグ付きのコマンドを使用して実現されます(によるフィルタリングを指定しない場合ですが-type
、それは別の話です)。
については-f
、2つのことを行います-1つはファイルを削除するかどうかのプロンプトを防ぎます(ディレクトリ内から別のユーザーが所有するファイルを削除するとき、rm: remove write-protected regular empty file 'f1'?
確認プロンプトを表示しないなど)、および無視します存在しないファイル。したがって、たとえば、存在しないファイル名では、rm: cannot remove 'nonexistent': No such file or directory
エラーが発生するはずです。
こちらもご覧ください: