grep보다 내 히스토리 파일에서 명령을 검색하는 더 좋은 방법이 있습니까? 나는 명령이 무엇으로 시작되는지 전혀 알지 못하지만, 역사가 얼마나 오래되었는지는 모른다.
업데이트 : 이전에는 zsh에 국한되었지만 겹치는 답변으로 인해 여기에있는 쉘 (또는 모드 (vi / emacs))에 대해 자유롭게 대답하십시오.
답변
Ctrl디스크립터가 말했듯R 이 + 가 가장 좋습니다 . 또는로 시작하는 최신 명령을 실행하는 또는를 포함하는 최신 명령을 실행하는을 사용할 수도 있습니다 .!string
string
!?string?
string
(나는이 질문과 관련이있는 유일한 물건이라고 생각하지만 난에 역사의 명령을 더 많은 적용 이 답변 )
답변
Bash를 사용할 때 Control– R를 입력 한 다음 입력을 시작하십시오. 입력 Control– R일부 텍스트를 입력 한 후 반복적으로 일치하는 명령 행으로 돌아갑니다.
답변
이것이 도움이되는지 확실하지 않지만 사용 하고 싶습니다 ctrl– r명령 입력을 시작하십시오. 그것은 당신의 역사를 통해 첫 번째 경기를 제시해야합니다. 단지 히트 경기를 통해 전환하려면 ctrl– r다시.
답변
다음을 추가하면 ~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Bash를 다시 시작하면 입력을 시작한 다음 및을 사용 Page Up하여 Page Down방금 입력 한 것과 동일한 접두사로 시작하는 행 기록을 앞뒤로 이동할 수 있습니다.
( \e[A
및 키 를 사용하는 것이 좋을 수도 있습니다. \e[B
그러면 새 키를 바인딩하는 대신 일반 Up및 Down동작 이 대체 됩니다.)
답변
이미 언급 한 Ctrl– R에 의해 호출 된 대화식 프롬프트 가 가장 편리한 방법입니다. 또한이 매핑하는 인기 Up와 Down현재 명령 줄에서 접두사에 대한 기록을 검색하는 화살표 키를, 그러나이 일부 필요 받는 변경 ~/.inputrc
파일을 .
대화식이 아닌 고전적인 솔루션은 셸 기록 확장을 사용하는 것입니다. 타자
!foo
로 시작하는 마지막 명령을 실행 foo
하고
!?foo
를 포함하는 마지막 명령을 실행합니다 foo
. 히스토리 확장에 대한 자세한 정보는 쉘이 Bash이거나 호환되는 것으로 가정하면 Bash 참조 매뉴얼 에서 찾을 수 있습니다 .
답변
당신이 추가하면 stty -ixon
사용자에게 ~/.bashrc
파일 다음 Ctrl– s에 반대 방향으로 갈 것입니다 Ctrl– r.
답변
입력 !ls
하면 bash는 히스토리를 살펴보고 “ls”로 시작하는 최신 명령을 실행합니다.