Compreendendo esta declaração de shell

8

Eu admito que é uma lição de casa, mas estou perdido em explicar a seguinte linha de comando:

AVISO : Este é um chamado BOMBA DE FORQUILHA! Esta linha de comando pode e irá travar o seu PC, consumindo toda a RAM e CPU (confie em mim, eu tentei isso ...)

:(){ :|:& };:

Como eu sei que eu deveria fazer isso sozinho, aqui está o que eu tenho até agora (procurar por esses caracteres é muito desencorajador).

  1. O pipe permite concatenar alguns comandos juntos para que a primeira saída seja usada pelo segundo como entrada.
  2. O & amp; é executar um comando em segundo plano (usado basicamente para iniciar algo de um shell que não deve ser bloqueado pelo comando)

Eu acho que: é para garfo? Mas aqui estou totalmente perdido! Estou disposto a aprender, então talvez alguém tenha um bom recurso onde eu possa ler sobre isso?

    
por WarrenFaith 08.06.2011 / 19:43

1 resposta

14
:()      # 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.

Fonte: Forkbombs na Wikipedia

    
por Egil 08.06.2011 / 19:56