Grep보다 내 히스토리 파일에서 명령을 검색하는 더 좋은 방법이 있습니까? 나는 명령이 무엇으로 시작되는지 전혀 알지 못하지만, 역사가 얼마나 멀리 있는지 잘 모르겠습니다.
pdate : 이전에는 zsh에 따라 다르지만 중복되는 답변으로 인해 여기에서 모든 쉘 (또는 모드 (vi/emacs))에 대해 자유롭게 답변하십시오.
Ctrl+R descriptor said 와 같이 일반적으로 가장 좋은 방법입니다. string
로 시작하는 최신 명령을 실행하는 !string
또는 string
를 포함하는 최신 명령을 실행하는 !?string?
를 사용할 수도 있습니다.
(나는 이것이이 질문과 관련된 유일한 물건이라고 생각하지만 this answer 에서 훨씬 더 많은 기록 명령을 다뤘습니다)
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 reference manual 에서 찾을 수 있습니다.
stty -ixon
너의 ~에게 ~/.bashrc
다음 파일 Ctrl-s 반대 방향으로 갈 것이다 Ctrl-r.
!ls
를 입력하면 bash는 히스토리를 살펴보고 "ls"로 시작하는 최신 명령을 실행합니다.
이것이 언급되지 않은 것에 놀랐습니다. 그러나 이것을 수행하여 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 Shell처럼.
역방향 검색을 사용할 때 앞으로 전환하려면 (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 >
이것은 해당 순서와 일치하는 마지막 명령을 실행합니다.나는 같은 것을 찾을 수 없었다 Ctrl+R 내 ksh와 tcsh를 위해 Bash에서.
사용하는 방법이 있습니다 Ctrl-R tcsh로. ~/.cshrc
에 다음을 추가하십시오.
bindkey "^r" i-search-back
(캐럿 부호 및 문자 r)
그것은 나를 위해 가장 큰 시간 절약입니다.
@ephemient와 비슷한 대답이지만 .bashrc에 넣을 수 있습니다
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-foward'
문구의 일부를 입력 한 다음 위/아래 화살표를 사용하여 가장 일치하는 최신 옵션을 찾아보십시오. 이것이 matlab의 기본 동작입니다.
대부분의 경우 설정을 새 시스템으로 이식하려면 ~/.bashrc
그러면 ~/.inputrc
예, 적어도 zsh를 사용하는 경우 존재합니다. 명령을 입력하기 시작한 다음 M-p (ESCp)를 입력하면 입력 한 내용과 일치하는 이전 명령이 표시됩니다. 다시 누르면 다음 경기를 찾습니다.