Lý do cho chuỗi trò chơi rmv cụ thể này trong trò đùa xkcd là gì?


14

Đây là một phần của chuỗi truyện tranh xkcd này , trong đó ý tưởng là tác giả không thể viết một chương trình sắp xếp để anh ta thêm mã để xóa tất cả các tệp

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

AFAIK cách chính tắc để xóa mọi thứ là để rm /mọi thứ bắt đầu từ root bị xóa. Đây là lệnh cuối cùng và hai lệnh trước đó cố gắng vào rmthư mục hiện tại và nội dung của thư mục chính.

Tại sao không chỉ rm /?

Câu trả lời:


19

Nếu bạn bắt đầu từ đỉnh cao, có thể bạn sẽ xóa sạch thứ gì đó rm(hoặc một phần quan trọng khác của hệ thống) cần tiếp tục, và sự xấu xa sẽ không được hoàn thành.

Các lệnh này sẽ đảm bảo rằng ít nhất cwd và thư mục chính của người dùng đã biến mất trước khi chuyển thành hạt nhân.


5
JFTR khi rm được tải trong bộ nhớ, nó sẽ hoạt động và tiếp tục hoạt động ngay cả khi các biến cần thiết được loại bỏ. Sau khi bạn chạy rm -rf /từ một phiên tương tác, vỏ của bạn sẽ vẫn hoạt động
Ulrich Dangel

8
rmS gần đây sẽ thất bại trong lệnh cuối cùng với rm: it is dangerous to operate recursively on ‘/’; ngoài điều rmđó không yêu cầu quyền truy cập vào bất kỳ tài nguyên nào sau khi khởi tạo. Một lý do cho việc sử dụng nhiều lệnh có thể là người dùng có thể có quyền truy cập khác nhau vào các thư mục đó.
Stéphane Gimenez

@UlrichDangel, tôi phát hiện ra một cách khó khăn trên Solaris một thời gian dài trở lại ...
vonbrand

1
Nó sẽ. Bạn thực sự cần phải sử dụng rm --no-preserve-root /để điều này thực sự hoạt động
Max

1
"Các lệnh này sẽ đảm bảo rằng ít nhất cwd và thư mục chính của người dùng đã biến mất trước khi trở thành hạt nhân." Điều gì xảy ra nếu chúng ta chạy tập lệnh đó khi chúng ta ở trong "/ bin /" :)? Hai lệnh cuối cùng sẽ không chạy.
XzKto

8

Chỉ để hiển thị mức độ phá hủy ngày càng tăng: Xóa thư mục hiện tại, sau đó $HOME, cuối cùng phá hủy tất cả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.