이 !find
명령을 사용하면 사용자는 find
모든 매개변수를 사용하여 이전에 실행한 명령을 실행할 수 있습니다.
내부적으로는 어떻게 작동하며 이 동작은 정확히 어디에 프로그래밍되어 있나요?
답변1
명령 자체와는 아무런 관련이 없으며 find
기록 확장이라는 셸의 기능입니다. 쉘이 기록 확장을 지원하는 경우 과거에 입력한 명령을 참조하고 이를 통해 일부 작업을 수행할 수 있습니다.
예를 들어 Bash에서 귀하의 작업은 이벤트 표시기의 명령 기록을 참조합니다. ~에서배쉬 매뉴얼:
이벤트 표시기는 기록 목록의 명령줄 항목에 대한 참조입니다. 참조가 절대적이지 않은 경우 이벤트는 기록 목록의 현재 위치를 기준으로 합니다.
!
뒤에 공백, 탭, 줄 끝
=
또는(
(extglob
내장 명령을 사용하여 쉘 옵션이 활성화된 경우shopt
)이 없으면 기록 교체를 시작합니다.
!string
문자열로 시작하는 기록 목록에서 현재 위치 이전의 가장 최근 명령을 참조합니다.
실제 내부 내용은 소스 코드를 읽을 수 있습니다.get_history_event
배쉬 4.3부터 시작합니다.