grep보다 내 히스토리 파일에서 명령을 검색하는 더 좋은 방법이 있습니까? 나는 명령이 무엇으로 시작되는지 전혀 알지 못하지만, 역사가 얼마나 오래되었는지는 모른다.
업데이트 : 이전에는 zsh에 국한되었지만 겹치는 답변으로 인해 여기에있는 쉘 (또는 모드 (vi / emacs))에 대해 자유롭게 대답하십시오.
grep보다 내 히스토리 파일에서 명령을 검색하는 더 좋은 방법이 있습니까? 나는 명령이 무엇으로 시작되는지 전혀 알지 못하지만, 역사가 얼마나 오래되었는지는 모른다.
업데이트 : 이전에는 zsh에 국한되었지만 겹치는 답변으로 인해 여기에있는 쉘 (또는 모드 (vi / emacs))에 대해 자유롭게 대답하십시오.
답변:
Ctrl디스크립터가 말했듯R 이 + 가 가장 좋습니다 . 또는로 시작하는 최신 명령을 실행하는 또는를 포함하는 최신 명령을 실행하는을 사용할 수도 있습니다 .!string
string
!?string?
string
(나는이 질문과 관련이있는 유일한 물건이라고 생각하지만 난에 역사의 명령을 더 많은 적용 이 답변 )
<kbd>Ctrl+R</kbd>
. 답변 소스
다음을 추가하면 ~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Bash를 다시 시작하면 입력을 시작한 다음 및을 사용 Page Up하여 Page Down방금 입력 한 것과 동일한 접두사로 시작하는 행 기록을 앞뒤로 이동할 수 있습니다.
( \e[A
및 키 를 사용하는 것이 좋을 수도 있습니다. \e[B
그러면 새 키를 바인딩하는 대신 일반 Up및 Down동작 이 대체 됩니다.)
Alt + Up
and 에 매핑하는 것을 선호합니다 Alt + Down
. 키보드 에뮬레이션에 따라 터미널 에뮬레이션은 이러한 조합에 하나를 매핑 할 수있는 사용 \E[A
및 \E[A
(리눅스 키 바인딩과 함께 예를 들어, KDE Konsole을) 또는 \E[1;3A
과 \E[1;3B
(X 무료 4 바인딩과 함께 예를 들어 XFCE 터미널 또는 KDE Konsole을).
이미 언급 한 Ctrl- R에 의해 호출 된 대화식 프롬프트 가 가장 편리한 방법입니다. 또한이 매핑하는 인기 Up와 Down현재 명령 줄에서 접두사에 대한 기록을 검색하는 화살표 키를, 그러나이 일부 필요 받는 변경 ~/.inputrc
파일을 .
대화식이 아닌 고전적인 솔루션은 셸 기록 확장을 사용하는 것입니다. 타자
!foo
로 시작하는 마지막 명령을 실행 foo
하고
!?foo
를 포함하는 마지막 명령을 실행합니다 foo
. 히스토리 확장에 대한 자세한 정보는 쉘이 Bash이거나 호환되는 것으로 가정하면 Bash 참조 매뉴얼 에서 찾을 수 있습니다 .
당신이 추가하면 stty -ixon
사용자에게 ~/.bashrc
파일 다음 Ctrl- s에 반대 방향으로 갈 것입니다 Ctrl- r.
C-q
" 고정 해제 " IT와 C-s
느린 직렬 연결을 사용할 때 수동으로 (일시 정지) 출력의 흐름을 방해 한 번 유용했다 일반적인 소프트웨어 흐름 제어 문자입니다. 이제 대부분의 경우 출력이 너무 빨라서 누를 때보고 싶은 내용 C-s
이 이미 스크롤되었습니다. stty -ixon
소프트웨어 흐름 제어를 끕니다.
이것이 언급되지 않은 것에 놀랐습니다. 그러나 이것을 수행하여 bash 또는 ksh에서 vi 모드를 선택할 수 있습니다 :
set -o vi
... 또는 이것을 ~/.inputrc
bash와 같은 프로그램에서 사용되는 GNU readline 의 내용으로 사용하십시오.
set editing-mode vi
그리고 그 후, 당신이 사용할 수있는 Esc입력 명령 모드를 사용할 k역사를 되돌아 가고, 그리고 j앞으로 이동합니다. 검색을 사용 /하여 정상적으로 ?검색하고 반대로 검색 할 수도 있습니다 .
을 사용하면 ~/.inputrc
GNU bash뿐만 아니라 CLISP와 같은 GNU readline 및 MySQL 명령 셸 및 CPAN 셸과 같은 프로그램을 사용하는 모든 작업에서 작동합니다.
역방향 검색을 사용할 때 앞으로 전환하려면 (Ctrl-R 명령 사용) :
.bashrc 파일을여십시오 :
sudo gedit ~/.bashrc
이 줄을 추가하십시오 (문자 "f"는 아직 시스템에서 사용하지 않는 다른 것으로 바뀔 수 있습니다)
bind '"\C-f": forward-search-history'
source ~/.bashrc
또는. ~/.bashrc
이제 SHORTCUT을 사용하여 역사에서 앞으로 나아갈 수 있습니다 : Ctrl + f
우분투 18.04 LTS 작업
나는 대부분 다음 두 가지를 사용합니다.
그러나 둘 다 시작 문자를 검색합니다.
fc -e - <SPACE>
<first few char for your previous >
이것을 사용 하면 해당 순서와 일치하는 마지막 명령이 실행됩니다.내 ksh 및 tcsh의 Bash에서 Ctrl+ 와 같은 것을 찾을 수 없었습니다 R.
set -o emacs
그렇고, 모드에 있습니다.