때로는 CtrlR명령 기록을 검색할 때 해당 항목이 기록에 있다는 것을 알고 있음에도 불구하고 원하는 항목을 찾지 못하는 경우가 있습니다. 나는 이미 해당 항목을 통과했기 때문에 다른 방향으로 이동하려면 다른 명령을 사용해야 한다고 생각합니다. 끝에 도달하면 루프(루프를 다시 시작)하여 전체 내역을 검색할 수 있는 명령이 있나요?
답변1
Alt+를 사용하여 >기록의 끝으로 돌아가서 다시 검색할 수 있지만 아마도 당신은 그것을 알고 있고 그것은 당신이 원하는 것이 아닐 수도 있습니다.
불행히도, 나는 그것을 감싸는 방법이 없다고 생각합니다.
man bash
또는 에서 이에 대해 아무것도 볼 수 없습니다 man readline
.
매크로 를 작성하려고 시도할 수 있지만 readline
현재 어느 역사적 선에 있는지 알려주는 변수가 없습니다.
그 외에도 실행 가능한 대안을 찾을 수 있는 몇 가지 다른 제안은 다음과 같습니다.
Ctrl터미널이 + 를 보내도록 구성된 경우 S(예: run 을 통해 stty stop undef
) Ctrl간단히 + 를 눌러 방향을 변경할 수 있습니다 S.
history | grep <whatever>
그런 다음 입력 !<number from left column>
하여 실행할 수 있습니다.
입력이 너무 길면 입력을 일부 저장하는 기능으로 만드세요.
hgrep() {
history | grep "$@"
}
설정 history-search-backward
및 history-search-forward
.
예를 들어 ls
Alt+ P, Alt+ P, Alt+는 모든 명령을 P 뒤로 검색합니다.ls
또한 다른 단축키를 눌러 방향을 변경할 수도 있습니다. 예를 들어 가장 오래된 명령을 사용 중인 경우 Alt+ 키를 + P키로 전환할 수 있습니다 .AltN
/etc/inputrc
이것을 귀하의 또는 .inputrc
for 에 넣으면 bash
:
$if mode=emacs
"\ep": history-search-backward
"\en": history-search-forward
$endif
이것은 .zshrc
당신 것입니다 zsh
:
bindkey -M emacs '^[p' history-beginning-search-backward
bindkey -M emacs '^[n' history-beginning-search-forward
한 단계 더 나아가 위쪽 화살표를 사용하여 이 작업을 수행할 수도 있습니다.
마지막으로 명령이 기록에 기록되고 있습니까? HISTCONTROL
또는 설정으로 인해 HISTIGNORE
무시되는 것일 수도 있고 , HISTSIZE
설정으로 인해 무시되는 것일 수도 있고, ?로 인해 무시되는 것일 수도 있습니다.