왜 `!45`가 `top`으로 바뀌나요?

왜 `!45`가 `top`으로 바뀌나요?

Ubuntu 12.04에서 문자열 검색을 시도하고 있는데 결과는 다음과 같습니다.

find . -exec grep -l "!45" {} \;

문자열 "!45"는 더 이상 검색되지 않지만 top. 명령을 호출하는 대신 "top"이라는 용어 검색을 시작합니다. -Ffor를 알아내기 전에는 grep특수 문자가 따옴표 사이의 텍스트로 처리될 것이라고 생각했습니다.

어쨌든 이제 이걸 발견했으니,나는 그것이 무엇인지, 무엇을 하는지, 왜 존재하는지 전혀 모릅니다!

답변1

Bash 셸에서는 !45명령 역사에서 명령 (또는 !32또는 )을 반환합니다 !873.

이벤트 표시기는 기록 목록의 명령줄 항목에 대한 참조입니다. 참조가 절대적이지 않은 경우 이벤트는 기록 목록의 현재 위치를 기준으로 합니다.

!

공백, 탭, 줄 끝, "=" 또는 "("(내장된 shopt를 사용하여 extglob 쉘 옵션이 활성화된 경우)가 뒤에 오지 않는 한 기록 교체를 시작합니다.

!N

명령줄 n을 참조하세요.

여기에서 확인하세요자세한 내용은 bash 매뉴얼을 참조하세요.

관련 정보