У чому причина цієї конкретної послідовності "rm" у жарті xkcd?


14

Ось частина цього коміксу xkcd, де ідея полягає в тому, що автор не може написати програму сортування, тому він додає код для видалення всіх файлів

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

AFAIK є канонічним способом видалити все, щоб видалити все, rm /що починається з кореня. Ось ця остання команда та дві команди перед цим спробуйте rmв поточному каталозі та вмісті домашнього каталогу.

Чому б не просто rm /?

Відповіді:


19

Якщо ви почнете з самої вершини, можливо, ви викреслите щось, що rm(або якусь іншу критичну частину системи) потрібно продовжувати, і зло залишиться неповним.

Ці команди гарантують, що принаймні cwd та домашня директорія користувача відпадуть, перш ніж ядерні.


5
JFTR, оскільки rm завантажується в пам'ять, він повинен працювати і продовжувати працювати, навіть якщо необхідні змінні видалено. Після запуску rm -rf /з інтерактивного сеансу ваша оболонка повинна працювати
Ульріх Дангел

8
Останні rms не зможуть в останній команді з rm: it is dangerous to operate recursively on ‘/’; крім цього rmне потребує доступу до будь-якого ресурсу після ініціалізації. Причиною використання декількох команд може бути те, що користувач може мати різні права доступу до цих каталогів.
Стефан Гіменез

@UlrichDangel, я довго виявив важкий шлях на Соляріс ...
vonbrand

1
Це буде. Насправді вам потрібно використовувати rm --no-preserve-root /для цього фактично роботу
Макс

1
"Ці команди гарантують, що принаймні cwd та домашня директорія користувача відійдуть, перш ніж ядерні." Що робити, якщо ми запустимо цей сценарій, коли ми перебуваємо в "/ bin /" :)? Останні дві команди взагалі не працюватимуть.
XzKto

8

Просто, щоб показати підвищення рівня руйнівності: Видаліть поточний каталог, а потім $HOME, нарешті, знищити всі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.