Понимание этого заявления оболочки

Я признаю, что это домашнее задание, но я потерял объяснение следующей командной строки:

ВНИМАНИЕ: Это так называемая вилка бомба! Эта командная строка может и приведет к краху вашего компьютера, потребляя всю оперативную память и процессор (поверьте мне, я попробовал это...)

:(){ :|:& };:

Поскольку я знаю, что я должен сделать это один здесь, это то, что я имею до сих пор (поиск этих символов очень обескураживает).

  1. Канал позволяет объединять некоторые команды вместе, так что первый вывод используется вторым в качестве ввода.
  2. & Является для запуска команды в фоновом режиме (в основном используется для запуска чего-то из оболочки, которая не должна блокироваться командой)

Я думаю, что: это вилка? Но здесь я полностью потерян! Я готов учиться, так что, может быть, у кого-то есть хороший ресурс, где я могу прочитать об этом?

1 ответ

Решение
:()      # define ':' -- whenever we say ':', do this:
{        # beginning of what to do when we say ':'
    :    # load another copy of the ':' function into memory...
    |    # ...and pipe its output to...
    :    # ...another copy of ':' function, which has to be loaded into memory
         # (therefore, ':|:' simply gets two copies of ':' loaded whenever ':' is called)
    &    # disown the functions -- if the first ':' is killed,
         #     all of the functions that it has started should NOT be auto-killed
}        # end of what to do when we say ':'
;        # Having defined ':', we should now...
:        # ...call ':', initiating a chain-reaction: each ':' will start two more.

Источник: Forkbombs в Википедии

Другие вопросы по тегам