쉘 명령에서! # : 3의 의미 ack 용 설치 안내서는 다음 명령을 사용하여

ack 용 설치 안내서는 다음 명령을 사용하여 ack 스크립트를 설치하도록 제안합니다.

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

!#:3끝에는 일종의 역 참조 라고 가정 하지만 그 의미는 무엇입니까? zsh에 해당하는 것이 있습니까? Google은 도움이되지 않았습니다.



답변

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

bash 맨 페이지 (섹션 HISTORY EXPANSION)에 따르면 패턴은 다음과 같이 확장됩니다.

  • 이벤트 지정자 !# 입니다 지금까지 입력 한 전체 명령 행을 말한다curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
  • :이벤트 지정자 (이 경우 전체 행)와 단어 지정자 (하위 파트 선택 ) 사이를 분할 합니다.
  • 워드 부호 3 선택 셋째 ,이 경우에는, 워드 / 인수 (제로에서 시작 워드의 카운팅) ~/bin/ack.

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

자세한 내용은 bash 매뉴얼 또는 zsh 매뉴얼 과 매우 유사합니다.


답변

에서 bash기록 대체입니다 (모든 기록 대체는로 시작 함 !). 특히, !#지금까지 명령 행의 모든 ​​것을 의미하며 ‘: 3’은 세 번째 단어 (시작은 0부터 시작 함)를 의미합니다.

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


답변