느낌표가 뒤따르는 에코 출력 이해

느낌표가 뒤따르는 에코 출력 이해

echo $$저도 얼마전에 놀고 있었어요. 음, 이것은 쉘의 pid를 보여줍니다. 그런데 제가 해냈 echo !더니 빨리 나타났어요! 그런 echo !!다음

echo echo !
echo !

$echo !!!

echo echo echo !!
echo echo !!

출력을 이해할 수 없습니다. 내가 아는 한, echo !!쉘에서 마지막으로 실행된 명령이 제공됩니다. 하지만 여기서 얻는 결과는 이상해 보입니다. 저는 bash 쉘을 사용합니다.

답변1

이것역사적 사건 지표 !!기록의 마지막 명령으로 대체되었습니다. Bash는 먼저 명령이 실행되는 방법을 인쇄한 다음 실행합니다.

예:

$ foo
foo: command not found
$ !!
foo                     # command to be executed
foo: command not found  # result of execution

귀하의 경우:

$ echo !
!
$ echo !!
echo echo !         # command to be executed
echo !              # result of execution
$ echo !!!
echo echo echo !!   # command to be executed
echo echo !!        # result of execution

이벤트 표시기가 있는 명령은 입력한 대로 기록에 삽입되지 않습니다. 먼저 이벤트 표시기가 확장된 다음 명령이 기록에 입력됩니다. 그렇기 때문에 세 번째 명령( echo !!!)에서 이벤트 표시기가 echo !!(두 번째 명령 입력) 이 아닌 echo echo !(두 번째 명령 확장)으로 대체됩니다.

교체된 부품이 강조 표시된 마지막 명령은 다음과 같습니다.

$ echo (!!)!
echo (echo echo !)! # command to be executed
echo echo !!        # result of execution

답변2

!!당신이 그것을 사용한다면교체됨의지하다마지막 명령껍질에서, 그래서첫번째 줄그것은교체 표시 echo echo !그리고두번째하나는산출 echo !

관련 정보