쉘 프롬프트에서 위쪽 키를 누르면 동일한 접두사를 가진 이전 명령을 검색합니다.

쉘 프롬프트에서 위쪽 키를 누르면 동일한 접두사를 가진 이전 명령을 검색합니다.

FreeBSD 세계에서 온 저는 Linux 터미널이 FreeBSD, 특히 버전 9.1처럼 작동하도록 만들고 싶습니다. 기본적으로 cd터미널에 입력하고 "위쪽" 화살표를 누르면 기록에 있는 모든 명령을 찾아볼 수 있습니다 cd. 많은 시간을 이기기 위해.

전체 내용을 입력해야 하는 Linux Debian 또는 CentOS에서 이 기능을 활성화하는 방법을 모르겠습니다. 누구든지 도와줄 수 있나요?

답변1

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

# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward

설명하다

~/.inputrc구성 파일입니다GNU 읽기 라인. 많은 쉘은 명령줄 편집을 위해 readline을 포함 bash하고 사용합니다. 위의 두 줄은 readline이 위쪽 화살표 키( )와 아래쪽 화살표 키( )에 대한 이스케이프 시퀀스를 발견하면 기록 검색 기능을 호출 tcsh하도록 지시합니다 .\e[A\e[B

답변2

현실은 FreeBSD와 Linux가 기본적으로 서로 다른 쉘을 사용한다는 것입니다. FreeBSD의 기본값은tcsh, 과거의 bash보다 더 나은 대화형 기능을 가지고 있지만(그러나 bash가 따라잡았습니다)스크립트 기능이 상당히 저하됨.

익숙한 환경을 얻는 가장 간단한 방법은 Linux에서 셸을 tcsh로 전환하는 것입니다. tcsh가 시스템 전체에 설치되어 있는 경우(그렇지 않은 경우 시스템 관리자에게 설치하도록 요청) 실행하여 chsh -s tcsh기본 쉘을 변경하십시오.

또는 익숙한 명령을 사용하도록 bash를 설정할 수 있습니다. 기본적으로 UpDown화살표는 입력한 접두사로 시작하는 명령뿐만 아니라 기록의 모든 명령 사이를 탐색합니다. 이를 익숙한 동작으로 변경하려면 .bashrc홈 디렉터리에 있는 bash의 초기화 파일에 다음 줄을 입력하세요. . ~/.bashrc초기화 파일을 다시 읽으려면 새 셸을 실행 하거나 시작하세요.

bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'

이스케이프 시퀀스는 화살표 키를 누를 때 터미널이 쉘로 보내는 것입니다. (escape, , ) 또는 터미널에 따라 와 유사한 것일 Up수 있습니다 .\eOAOA\e[ADown

기본적으로 bash는 명령 기록 검색을 위해 다양한 키 바인딩을 제공합니다. Ctrl+를 누른 R다음 일부 문자를 입력하면 해당 줄의 어느 위치에서든 해당 하위 문자열이 포함된 명령을 검색할 수 있습니다. 뒤로 대신 앞으로 이동하려면 Ctrl+를 누르세요 . S검색은 증분 방식입니다(예: 입력과 동시에 검색). Alt+ PAlt+는 N비증분 검색을 제공합니다.

bash와 tcsh 대신 zsh로 전환할 수 있습니다.다른 쉘에는 없는 몇 가지 깔끔한 기능이 있습니다.. Bash와 마찬가지로 Zsh에는 기본적으로 Ctrl+ R및 +가 있습니다. tcsh 에서처럼 작동하려면 다음 줄을 입력하세요 .CtrlSUpDown~/.zshrc

bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward

어디에서나 동일한 쉘을 사용하려면 FreeBSD에서 bash 또는 zsh를 사용할 수도 있습니다. 단, 포트가 설치되어 있어야 합니다(시스템 관리자에게 다시 문의하십시오).

답변3

tcsh대부분의 Linux 배포판에서 작동합니다. 패키지를 설치 tcsh하고 실행하여 chsh -s /bin/tcsh기본 셸로 만들어 보세요.

관련 정보