이 쉘 문장 이해 데 길을 잃었습니다. 경고 : 이것은 소위

숙제라고 인정하지만 다음 명령 줄을 설명하는 데 길을 잃었습니다.

경고 : 이것은 소위 포크 폭탄입니다! 이 명령 줄은 모든 RAM과 CPU를 소비하여 PC를 손상시킬 수 있습니다 (믿습니다, 시도했습니다 …)

:(){ :|:& };:

내가 여기서 혼자해야한다는 것은 내가 지금까지 가지고있는 것입니다 (이러한 문자를 찾는 것은 매우 낙담합니다).

  1. 파이프는 첫 번째 출력이 두 번째 입력에 의해 사용되도록 일부 명령을 함께 연결할 수 있습니다.
  2. &는 백그라운드에서 명령을 실행하는 것입니다 (기본적으로 명령에 의해 차단되어서는 안되는 쉘에서 무언가를 시작하는 데 사용됨)

나는 추측한다 : 포크인가? 그러나 여기서 나는 완전히 길을 잃었다! 나는 기꺼이 배우려고하는데 누군가 그것에 대해 읽을 수있는 좋은 자료를 가지고 있을까?



답변

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

출처 : 위키 백과에 대한 폭탄