방금 입력한 접두사가 포함된 이전 명령을 검색합니다.

방금 입력한 접두사가 포함된 이전 명령을 검색합니다.

위쪽 및 아래쪽 화살표를 사용하여 명령 기록 내에서 탐색할 수 있습니다.

Matlab과 같은 일부 IDE에서는 무언가를 입력한 다음 화살표 키를 누르면 입력한 내용으로 시작된 명령 기록 사이만 스크롤됩니다. 이것은 정말 편리하지만 쉘 터미널에서는 작동하지 않습니다.

쉘 터미널에서 유사한 기능을 얻을 수 있는 방법이 있습니까? 터미널을 보다 효율적으로 사용하기 위한 다른 팁이 있습니까?

답변1

당신이 찾고 있는 것은 입니다 CtrlR.

를 입력 CtrlR한 다음 원하는 명령 부분을 입력합니다. Bash는 첫 번째로 일치하는 명령을 표시합니다. 계속 입력 CtrlR하면 bash는 이전에 일치하는 명령을 순환합니다.

기록에서 뒤로 검색하려면 CtrlS대신 입력하세요. ( CtrlS이 방법이 효과가 없다면 XON/XOFF 흐름 제어를 비활성화해야 한다는 의미일 수 있습니다. 이렇게 하려면 를 실행하십시오 stty -ixon.)

이는 의 "검색" 아래에 설명되어 있습니다 man bash.

답변2

다음을 다음 항목에 넣으세요 ~/.inputrc.

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

그것들은 당신이 기대하는 대로 만들어지고 Page Up작동 Page Down합니다. (일부 배포판에서는 이미 이를 구성했습니다.) 저는 개인적으로 이러한 방법이 Ctrl+ R또는 history. 보다 더 편리하다고 생각합니다.

업데이트: 2022년 9월에 출시된 bash-5.2/readline-8.2에서는 이러한 동작을 기본 동작으로 설정합니다. inputrc설정하는 데 더 이상 조작이 필요하지 않습니다 .

답변3

다음 줄을 추가하십시오.~/.inputrc

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

이것은 egmont의 답변과 유사하지만 Page Up 및 Page Down을 사용하는 대신 Arrow Up 및 Arrow Down의 이스케이프 시퀀스를 사용합니다. 이 방법은 Mac에서 사용하는 것이 훨씬 더 편리합니다.

답변4

내가 일반적으로 사용하는 것은 history명령을 다음과 결합하는 것입니다.grep

즉:

history | grep <command im looking for>

그러면 이 명령이 포함된 입력한 명령의 번호가 매겨진 기록이 표시되며 다음을 사용할 수 있습니다.

!<number listed in history command>

명령을 다시 실행하십시오.

즉:

history | grep history

142  history
143  history | grep lvresize
568  history | grep echo
570  history | grep echo
571  history | grep history

다음은: !571

반복할 것이다history | grep history

관련 정보