%2C%20!%24%3Ar%3Ar(%EB%8A%90%EB%82%8C%ED%91%9C%20%EB%8B%AC%EB%9F%AC%20%EC%BD%9C%EB%A1%A0%20r)%2C%20!%23%3At(%EB%8A%90%EB%82%8C%ED%91%9C%20%ED%95%B4%EC%8B%9C%20%EC%BD%9C%EB%A1%A0%20t)%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%84%20%EC%9D%98%EB%AF%B8%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
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의 기본 이름과 동일한 이름을 가진 디렉터리가 포함되어 있다고 가정). ). 및 명령 은 동일한 방식으로 진행됩니다..
.
chmod
cd