xkcdジョークのこの特定の「rm」シーケンスの理由は何ですか?


14

このxkcdコミックストリップの一部は、作成者が並べ替えプログラムを作成できないため、すべてのファイルを削除するコードを追加するというものです。

system("rm -rf ./");
system("rm -rf ~/*");
system("rm -rf /");

私が知る限り、すべてを削除する標準的な方法はrm /、ルートから始まるすべてが削除されるようにすることです。これは、最後のコマンドと、その前の2つのコマンドでありrm、現在のディレクトリとホームディレクトリの内容を試みます。

どうしてrm /

回答:


19

最上部から始めると、rm継続する必要がある何か(またはシステムの他の重要な部分)を一掃する可能性があり、悪は不完全なままになります。

これらのコマンドは、核に移行する前に、少なくともcwdとユーザーのホームディレクトリが削除されていることを確認します。


5
rmとしてのJFTRは、必要な変数が削除されても機能するはずであり、機能し続けるはずです。あなたが実行した後rm -rf /、あなたのシェルはまだ作業しなければならない、対話型セッションから
ウルリッヒDangel

8
最近rmのsは、最後のコマンドでrm: it is dangerous to operate recursively on ‘/’;で失敗します。それ以外rmは、初期化後にリソースにアクセスする必要はありません。複数のコマンドを使用する理由は、ユーザーがこれらのディレクトリに対して異なるアクセス許可を持っている可能性があるためです。
ステファンギメネス

@UlrichDangel、私は長い間Solarisで困難な方法を見つけました
...-vonbrand

1
そうなる。あなたが実際に使用する必要がありrm --no-preserve-root /、これに実際の仕事のために
マックス

1
「これらのコマンドは、核となる前に、少なくともcwdとユーザーのホームディレクトリがなくなっていることを確認します。」「/ bin /」にいるときにそのスクリプトを実行するとどうなりますか?最後の2つのコマンドはまったく実行されません。
XzKto

8

破壊性のレベルを上げるために、現在のディレクトリを削除してから$HOME、最後にすべてを破壊します。

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