Я только что столкнулся с этой командой на форуме Linux, где автор предупредил, что не пытайтесь использовать эту команду для любопытства. Так что мое любопытство приходит. Что означает команда «:() {:|:&}; :" в ракушке?
1 ответ
Эта вилочная бомба описана здесь
В bash можно определить функцию
function_name() { ... }
где ...
реализация или тело функции
:(){ ... }
определяет функцию с именем :
:|:
запускает функцию внутри себя - то есть рекурсивно, и передает ее вывод другому вызову себя.
&
запускает предыдущую команду в фоновом режиме.
Так что это дает нам :(){:|:&}
для определения этой функции
;
отделяет команду, определяющую функцию, от следующей команды в той же строке (например, cd;pwd
)
:
является последним вызовом команды, который запускает только что определенную функцию.
Как правило, я надеюсь, что ограничения на процессы и другие ресурсы для каждого пользователя ограничат эффект от подобной вилочной бомбы. В Википедии есть описание обезвреживания вилочной бомбы
Приложение: После написания этого ответа я заметил, что этот вопрос является дубликатом
- Что означает эта загадочная команда Bash?
- Почему эта команда дает сбой Linux
- Что делает эта команда:(){: |: &} ;:?
Другие связанные вопросы