回答:
重要:最新のUEFIシステムは、/sys
ディレクトリの下にファームウェアをマウントし、OSで使用できるようにします。このコマンドは最新のシステムでは実行しないでください。このコマンドは、このファームウェアを削除し、基本的にマシンをブリックします。
私が考えることができる最も単純なシナリオは、ドライブからすべてのデータを削除したい人です。これを行うには完全に正当な理由があり、私が考えることができる最も簡単な方法は
rm -rf --no-preserve-root /
これは実際に例として与えられていることがわかりinfo rm
ます:
`--no-preserve-root'
Do not treat `/' specially when removing recursively. This option
is not recommended unless you really want to remove all the files
on your computer.
別の完全に正当な理由は、マウントしたファイルシステムを削除したいということですchroot
。その場合、環境rm -rf --no-preserve-root /
内のシステムは削除されchroot
ますが、システムはそのまま残ります。
考えられる理由は他にもあると確信していますが、一般的には、私のシステムで自分がやりたいことを何でもできるようにすることは非常に合理的なアプローチのようです。注意することは私の仕事です。システムは、私がやりたいことだけを実行できるようにするべきです。私が欲しいものが愚かであれば、それは私の問題であり、OSの問題ではありません。
とにかく、これは比較的新しい制限であり、POSIX仕様の第7バージョン(以前のものがここにあります)で追加されましたrm -rf /
。それが完全に有効なコマンドになる前です。歴史的なノートでは.
、..
ディレクトリとディレクトリは、ディレクトリを削除する機能を最初に取得したrm
1979年以来、常にから保護されていrm
ます。詳細はこちら。
/
。
rm -rf /
すると、たとえば誰かのNFS / CIFS / SSHFSマウントでリモートマシンをブランクにすることができます。
の存在 --no-preserve-root
スイッチ追加の機能を追加することではなく、機能の非常に健全な削減を無効にすることです。この切り替えは、コンピューターが指示されたとおりに実行する必要があり、必要なアクションを表現するためにコマンドを使用できるようにするという哲学に基づいている可能性があります。このスイッチはUEFIより前のバージョンであり、私の経験に基づいて、今では時代遅れだと言います。
現代の実践では、このスイッチrm
を使用しない場合、コマンドは初期化されていない変数または漂遊スペースを使用するときに、ルートディレクトリが誤って削除されるのを防ぎます。
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
楽しい脚注:保護はその意図ではありませんでした。Sun Microsystemsのブログによると、/
ディレクトリを削除すると、現在の作業ディレクトリが暗黙的に削除されます。これは、.
..
ます。これとディレクトリます。これが、彼らの標準化委員会がこの特別な例外を許可した理由であり、事故を防ぐためではありません。この変更は、Solaris 10ビルド36で初めて導入されました。
おそらく、これは元のaskerが望む答えではありませんが、ルートディレクトリからすべてのファイルを再帰的に削除する必要があるユースケースがあります。これはrm
コマンドによるものではありませんが、(組み込みでない)Linuxシステムのブート中のswitch_root(8)プロセスの一部です。
/
が、「一般的なケース」が引き続き表示されます。言い換えれば、»何をすべきかを伝えるのは私のコンピューターの仕事ではありません。«すべきではありません。