위쪽 및 아래쪽 화살표를 사용하여 명령 기록 내에서 탐색할 수 있습니다.
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