아래 bash 명령에서 !#(느낌표 해시), !$:r:r(느낌표 달러 콜론 r), !#:t(느낌표 해시 콜론 t)는 무엇을 의미합니까?

아래 bash 명령에서 !#(느낌표 해시), !$:r:r(느낌표 달러 콜론 r), !#:t(느낌표 해시 콜론 t)는 무엇을 의미합니까?

Nagios 패키지를 설치하려고 했는데 가이드에서 이상한 bash 확장을 우연히 발견했습니다.여기. 확장이 무엇을 의미하는지 이해하도록 도와줄 수 있는 사람이 있나요? 위키 링크도 나중에 참조하는 데 도움이 될 것입니다.

root@z:~> wget http://mathias-kettner.de/download/check_mk-1.1.7i5.tar.gz
root@z:~> tar zxvf !#:t
root@z:~> chown -R root:root !$:r:r && chmod -R o-w !$:r:r && cd !$:r:r
root@z:~/check_mk-1.1.7i5> ./setup.sh

답변1

이것들은bash역사 확장 키워드. 쉘 기록에서 행을 선택하고 수정 후 가능하면 해당 행의 일부를 다시 삽입합니다. 귀하가 링크한 사이트에서는 이에 대해 합리적으로 설명하고 있지만 모든 내용을 설명하지는 않습니다.

tar zxvf !#:t

실제로는 말이 안 됩니다. !#지금까지 입력한 줄을 선택하지만 그게 전부 tar zxvf이고 우리는 그 중 어떤 것도 재사용하고 싶지 않습니다. 그것은해야한다

tar zxvf !$:t

!$에 제공된 URL인 이전 줄의 마지막 부분( )을 선택하고 wget파일 이름 부분( tail의 경우 , 엄밀히 말하면 URL과 잘 작동하는 :t마지막 디렉토리 구분 기호 뒤에 남은 부분 )을 가져옵니다./

그 다음에

chown -R root:root !$:r:r

이전 행의 마지막 부분을 선택하고 파일 확장자를 삭제합니다( — 엄밀히 말하면 를 포함하여 :r마지막 이후의 모든 내용을 제거합니다 ). 이는 디렉터리 이름을 제공합니다(tarball에 tarball의 기본 이름과 동일한 이름을 가진 디렉터리가 포함되어 있다고 가정). ). 및 명령 은 동일한 방식으로 진행됩니다...chmodcd

관련 정보