쉘 히스토리를 검색하는 가장 좋은 방법 검색하는 더 좋은 방법이 있습니까? 나는

grep보다 내 히스토리 파일에서 명령을 검색하는 더 좋은 방법이 있습니까? 나는 명령이 무엇으로 시작되는지 전혀 알지 못하지만, 역사가 얼마나 오래되었는지는 모른다.

업데이트 : 이전에는 zsh에 국한되었지만 겹치는 답변으로 인해 여기에있는 쉘 (또는 모드 (vi / emacs))에 대해 자유롭게 대답하십시오.



답변

Ctrl디스크립터가 말했듯R 이 + 가 가장 좋습니다 . 또는로 시작하는 최신 명령을 실행하는 또는를 포함하는 최신 명령을 실행하는을 사용할 수도 있습니다 .!stringstring!?string?string

(나는이 질문과 관련이있는 유일한 물건이라고 생각하지만 난에 역사의 명령을 더 많은 적용 이 답변 )


답변

Bash를 사용할 때 ControlR를 입력 한 다음 입력을 시작하십시오. 입력 ControlR일부 텍스트를 입력 한 후 반복적으로 일치하는 명령 행으로 돌아갑니다.


답변

이것이 도움이되는지 확실하지 않지만 사용 하고 싶습니다 ctrlr명령 입력을 시작하십시오. 그것은 당신의 역사를 통해 첫 번째 경기를 제시해야합니다. 단지 히트 경기를 통해 전환하려면 ctrlr다시.


답변

다음을 추가하면 ~/.inputrc

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Bash를 다시 시작하면 입력을 시작한 다음 및을 사용 Page Up하여 Page Down방금 입력 한 것과 동일한 접두사로 시작하는 행 기록을 앞뒤로 이동할 수 있습니다.

( \e[A및 키 를 사용하는 것이 좋을 수도 있습니다. \e[B그러면 새 키를 바인딩하는 대신 일반 UpDown동작 이 대체 됩니다.)


답변

이미 언급 한 CtrlR에 의해 호출 된 대화식 프롬프트 가 가장 편리한 방법입니다. 또한이 매핑하는 인기 UpDown현재 명령 줄에서 접두사에 대한 기록을 검색하는 화살표 키를, 그러나이 일부 필요 받는 변경 ~/.inputrc파일을 .

대화식이 아닌 고전적인 솔루션은 셸 기록 확장을 사용하는 것입니다. 타자

!foo

로 시작하는 마지막 명령을 실행 foo하고

!?foo

를 포함하는 마지막 명령을 실행합니다 foo. 히스토리 확장에 대한 자세한 정보는 쉘이 Bash이거나 호환되는 것으로 가정하면 Bash 참조 매뉴얼 에서 찾을 수 있습니다 .


답변

당신이 추가하면 stty -ixon사용자에게 ~/.bashrc파일 다음 Ctrls에 반대 방향으로 갈 것입니다 Ctrlr.


답변

입력 !ls하면 bash는 히스토리를 살펴보고 “ls”로 시작하는 최신 명령을 실행합니다.