!#:3은 쉘 명령에서 무엇을 의미합니까?

!#:3은 쉘 명령에서 무엇을 의미합니까?

ack 설치 가이드에서는 다음 명령을 사용하여 ack 스크립트를 설치할 것을 권장합니다.

curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3 

!#:3마지막 것은 일종의 역참조인 것 같은데 , 그게 무슨 뜻인가요? zsh에 동등한 것이 있습니까? Google은 도움이 되지 않았습니다.

답변1

이것은 bash에 의해 확장된 특수 구문입니다. zsh에서도 작동합니다.

Bash 매뉴얼 페이지(Historical Extensions 섹션)에 따르면 모드는 다음과 같이 확장됩니다.

  • 이것이벤트 표시기 !#지금까지 입력한 전체 명령줄을 의미합니다.curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
  • :사이에 분할이벤트 표시기(이 경우 전체 행) 및단어 표시기(하위 섹션 선택)
  • 이것단어 표시기 3그것은 선택했다제삼단어/인수(단어 수는 0부터 시작), 이 경우에는 ~/bin/ack.

최종 명령줄(보통 실행 전에 표시됨)은 다음과 같습니다 curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack.

자세한 내용은 다음을 참조하세요.배쉬 매뉴얼아니면 아주 비슷하거나zsh 매뉴얼

답변2

에는 bash기록 대체가 있습니다(모든 기록 대체는 로 시작함 !). 특히 !#이는 지금까지 명령줄에 있는 모든 것을 의미하며, 세 번째 단어(0부터 계산)를 나타내기 위해 ':3'을 추가합니다.

따라서 위의 명령은 !#:3로 번역됩니다 ~/bin/ack.

관련 정보