Jaki jest powód tej konkretnej sekwencji „rm” w dowcipie xkcd?


14

Oto część tego komiksu xkcd, w którym pomysł polega na tym, że autor nie może napisać programu sortującego, więc dodaje kod, aby usunąć wszystkie pliki

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

AFAIK kanonicznym sposobem na usunięcie wszystkiego jest usunięcie wszystkiego rm /. Oto ostatnie polecenie i dwa poprzednie polecenia, które próbują przejść rmdo bieżącego katalogu i zawartości katalogu domowego.

Dlaczego nie tylko rm /?

Odpowiedzi:


19

Jeśli zaczniesz od samego szczytu, możliwe jest, że usuniesz coś, co rm(lub jakaś inna krytyczna część systemu) musi być kontynuowana, a zło pozostanie niekompletne.

Te polecenia sprawią, że przynajmniej cwd i katalog domowy użytkownika znikną przed przejściem do jądra.


5
JFTR, ponieważ rm jest ładowany do pamięci, powinien działać i działać nawet po usunięciu niezbędnych zmiennych. Po uruchomieniu rm -rf /sesji interaktywnej twoja powłoka powinna nadal działać
Ulrich Dangel

8
Ostatnie rms nie powiedzie się na ostatnim poleceniu za pomocą rm: it is dangerous to operate recursively on ‘/’; inne niż rmto nie wymaga dostępu do żadnego zasobu po inicjalizacji. Przyczyną używania wielu poleceń może być to, że użytkownik może mieć różne uprawnienia dostępu do tych katalogów.
Stéphane Gimenez

@UlrichDangel, dawno temu dowiedziałem się trudnej drogi na Solarisie ...
vonbrand

1
To będzie. Musisz to wykorzystać, żeby rm --no-preserve-root /to zadziałało
Max

1
„Te polecenia sprawią, że przynajmniej cwd i katalog domowy użytkownika znikną przed przejściem na nuklearne”. Co jeśli uruchomimy ten skrypt, gdy jesteśmy w „/ bin /” :)? Ostatnie dwa polecenia w ogóle się nie uruchomią.
XzKto,

8

Aby pokazać rosnący poziom destruktywności: Usuń bieżący katalog, a następnie $HOMEzniszcz wszystko.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.