rm -rfは何をしますか?


25

rm -rfファイルまたはディレクトリの削除に使用するとどうなりますか?

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



16
@DanDascalescu manページを読むことで簡単に答えられるので、このような質問に答えるために誰でも最初に電話するべきです。
デビッドリチャービー

9
試してみてください。(ネタバレ:しないでください)
imallett

3
ゴリー!この質問はDevRobotからのいたずらでなければなりません!マニュアルページを参照せずにカルマレベルに到達するにはどうすればよいでしょうか。今...あなたは人間ですか?!
Cbhihe

2
本当にいたずらのように完全に読み取ります。誰かが「雨はH2Oでできていますか?」(良い答えは:通常はそうですが、将来、人間が地球の植物相の半分を破壊すると、その50%が酸性に変わります(酸性雨のように))
syntaxerror

回答:


52

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

以下からrmのmanページ(タイプman rmの端末では、それを見るために)-r行います。

remove directories and their contents recursively

そして-f

ignore nonexistent files and arguments, never prompt

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

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

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


@ポール、スラッシュは何をしますか?このコマンドを使用して、頻繁にディレクトリを削除し、スラッシュなしで削除します。
タコ

1
@Octopus、スラッシュ自体はルートディレクトリを示します。 rm -rf /理論的には、書き込み権限があるディレクトリにあるコンピューター上のすべてのファイルを削除します。あなたがrootなら、それはシステム全体を一掃することを意味します。(実際には、GNUにrmは、rm -r /あなたも言わない限り許可を拒否する特別なケースがあるため、機能しません--no-preserve-root。)
cjm

10
rm -rf /それでも同じように、適切にキャッチされたかどうかを確認することはお勧めしません。
cjm

2
@mattburnett VMでも危険です。VMに対してローカルではないマウントがあるかもしれません。特に、ホストマシンのディレクトリの1つをVMにマウントして、ホストとVMの間でファイルを共有することはかなり一般的だと思います。
hvd

1
@mattburnett VMがあります。隔離されたVMがありません。未知の実行可能ファイルは実行しません。:)
hvd

22

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

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

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

8

rm削除の略です。rフラグは、再帰的にディレクトリとその内容を削除することですf手段の力、そしてそれがどの確認プロンプトを上書きします。


3
厳密に言えばr flag is to remove directories 正しくありません..それはその内容とともにディレクトリを削除します、それは再帰的な操作です..あなたの言葉によれば、それはディレクトリのみを削除します、サブディレクトリはどうですか、その下のファイルはどうですか?ディレクトリエントリには名前
-inode

そうです、答えを編集します。
クリス

1
-rは、ディレクトリとその内容を再帰的に削除します。
ジムバルター

3

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

-r(再帰的削除)の全体のポイントはrm、単にrmunlink)を使用する基になるシステムコールが空のディレクトリでのみ動作するため、ディレクトリが空でない場合、ディレクトリを削除できないことです。したがって、-rフラグが行うことは、深さ優先検索がディレクトリに降りて最初にファイルを削除し、次にディレクトリが空の場合にのみ-それが削除されます。この同じ効果はfind-deleteフラグ付きのコマンドを使用して実現されます(によるフィルタリングを指定しない場合ですが-type、それは別の話です)。

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

こちらもご覧ください:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.