Qual é o significado do comando “:() {: |: &}; : ”Com casca? [duplicado]

4

Esta pergunta já tem uma resposta aqui:

Acabei de encontrar este comando em um fórum do linux online, onde o autor advertiu que não tente este comando por curiosidade. Então, minha curiosidade vem. Qual é o significado do comando “:() {: |: &}; : ”Com casca?

user3872279
fonte
1
Veja Fork pump, para isso é o que é.
Dan D.

Respostas:

6

Esta bomba de garfo é descrita aqui

No bash, uma função pode ser definida

function_name() { ... }

onde ...está a implementação ou o corpo da função

:(){ ... }

define uma função chamada :.

:|:

executa a função dentro de si - isto é recursivamente, e canaliza sua saída para outra invocação de si mesma.

 & 

executa o comando anterior em segundo plano.

Então isso nos :(){:|:&}permite definir essa função

 ;

separa o comando que define a função do seguinte comando na mesma linha (como cd;pwd)

 :

é uma chamada de comando final que começa a executar a função recém-definida.


Normalmente, eu espero que os limites por usuário de processos ou outros recursos limitem o efeito de um fork bomb desse tipo. A Wikipedia tem uma descrição de desarmar uma bomba de garfo


Adendo: Depois de escrever esta resposta, notei que esta pergunta era uma duplicata de

Outras questões relacionadas

RedGrittyBrick
fonte
E também relacionado Por que o espaço em branco às vezes é necessário em torno de metacaracteres? com uma história gira em torno de :)
fedorqui