BASH에서 역방향 검색을 순환하는 방법은 무엇입니까?

BASH에서 역방향 검색을 순환하는 방법은 무엇입니까?

터미널에서 Ctrl+를 입력하면 R이전에 BASH에 입력한 일치 명령을 검색할 수 있습니다. 예를 들어 Ctrl+ Rthen 을 입력하면 grep마지막 grep명령이 나열되고 Enter 키를 눌러 사용할 수 있습니다. 그러나 이것은 단 하나의 제안만을 제공합니다. 이전에 입력한 다른 일치 명령을 순환할 수 있는 방법이 있습니까?

답변1

질문을 올바르게 이해했다면 Ctrl+ 를 반복해서 눌러 대안을 순환할 수 있어야 합니다 R.

예:

  • Ctrl+R
  • grep
  • Ctrl+R
  • Ctrl+ R ...

그것은 당신의 역사를 거꾸로 검색합니다. 대신 앞으로 검색하려면 Ctrl+ 를 사용하세요. 하지만 + 를 대신하는 XON/XOFF 기능을 비활성화하려면 그 전에 S다음을 설정해야 할 수도 있습니다 stty -ixon(또는 수동으로) . 어쨌든 그런 일이 발생하면 +를 사용하여 화면 출력을 다시 활성화하십시오(자세한 내용은.bash_profileCtrlSCtrlQ여기.)

답변2

명령이 자주 사용된다고 생각되면 태그를 추가할 수 있습니다.

command #useful

그 다음에

Ctrl+R #useful

이것은 #주석 구분 기호이기 때문에 작동합니다. 즉, 기호 뒤에 오는 모든 것은 명령으로 해석되지 않습니다. 그러나 이력에는 기록되므로 검색이 가능합니다.

답변3

~/.inputrc에 다음 줄을 추가하여 위쪽 및 아래쪽 화살표를 설정하여 약간 다른 검색을 수행할 수도 있습니다.

"\e[A": history-search-backward
"\e[B": history-search-forward

명령의 어느 곳에서나 하위 문자열을 검색하는 대신(예:Ctrl-r) 명령을 검색합니다커서 왼쪽에 있는 텍스트부터 시작. 예를 들어 다음 명령을 실행하면 다음과 같습니다.

$ ls bart
$ ls fools

그런 다음 입력 ls하고 두 번 누르면 같은 위치에 커서가 Up표시됩니다 . - ls bart와 비교하면 마지막 줄에서 두 번 찾은 것이므로 이전 줄을 찾으려면 다시 한 번 눌러야 합니다.Ctrlrls

이러한 접근 방식은 모두 장점이 있으며 둘 다 많은 시간을 절약할 수 있습니다.

답변4

내장된 대체 기능이 있습니다 Ctrl + R.hstr. 동시에 모든 검색 토큰과 일치하는 명령 기록을 검색하고 화살표 키를 사용하여 결과를 순환할 수 있습니다.

예

여기는데모 스크린캐스트.

다음과 같은 Debian 계열 OS에 설치할 수 있습니다.

add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr

hstr --show-configuration >> ~/.bashrc

그런 다음 Ctrl + R(터미널을 다시 연 후) 사용하십시오.

관련 정보