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


19

FreeBSD의 세계에서 오는 나는 기본적으로 입력 할 때 FreeBSD의 일, 특히 9.1 버전처럼 리눅스 터미널없이 행동을하고자하는 cd터미널에서 그리고는 "업"당신이 역사를 시작하는 모든 명령을 찾아 볼 수 있습니다 화살표와 함께 추진 cd하는 당신을한다 많은 시간을 얻습니다.

Linux Debian 또는 CentOS 에서이 기능을 활성화하여 전체를 입력하도록 강요하는 방법을 모르겠습니다. 누군가 도와주세요.


7
그것은 터미널이 아니라 쉘의 기능입니다. FreeBSD에서 어떤 쉘을 사용하고 있습니까? Linux에서 동일한 (또는 유사한) 셸을 얻을 수 있습니다.
cjm

tcsh 쉘을 사용하고 있습니다.
Abdelilah Benaou

2
나는 약간의 검색 후, 나는 내가 넣어 활성화 할 수 발견 ... OS X에서 tcsh를 사용하고이 편리한 보이는 행동을하지 않았다 bindkey -k (up|down) history-search-(back|for)ward내에서 .tcshrc 같은 여기에 설명 . 멋있는!
개렛 올브라이트

답변:


34

다음에 추가하십시오 ~/.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

설명

~/.inputrcGNU readline 의 구성 파일입니다 . 를 포함한 많은 껍질 bashtcsh명령 행 편집을위한 사용의 readline. 위의 두 줄은 위쪽 화살표 키 ( \e[A) 및 아래쪽 화살표 키 ( ) 의 이스케이프 시퀀스가 ​​발견 될 때 readline에 히스토리 검색 기능을 호출하도록 지시 \e[B합니다.


F12추가 하여 마지막 줄의 마지막 단어를 현재 명령의 끝에 놓습니다. Last word종종 다양한 비전 진부에서 시도하고 싶은 경로 입니다. 그리고 시프트 F12은 처음부터 전체 마지막 줄을 editting에 날 다시 넣어. ~/.inputrc편리한 도구입니다.
jalanb

시프트 F12의 하나는 필요 VI 모드 .
jalanb

6

현재 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'

이스케이프 시퀀스는 화살표 키를 누를 때 터미널이 쉘로 보내는 것입니다. Up할 수있다 \eOA(탈출, O, A) 또는 \e[A터미널에 따라, 유사에 Down.

기본적으로 bash는 명령 기록을 검색하기 위해 다른 키 바인딩을 제공합니다. Ctrl+ R를 누른 다음 일부 문자를 입력하여 행의 아무 곳이나이 하위 문자열을 포함하는 명령을 검색 할 수 있습니다 . 뒤로가 아니라 앞으로 가려면 Ctrl+ S를 누릅니다 . 검색은 증 분식입니다 (예 : 유형별). Alt+ PAlt+ N는 비 증분 검색을 제공합니다.

bash 및 tcsh 대신 zsh로 전환하면 다른 쉘에는없는 깔끔한 기능이 있습니다 . Zsh는 기본적으로 bash와 마찬가지로 Ctrl+ RCtrl+ S를 갖습니다 . tcsh에서 UpDown같이 하고 얻으려면 다음 줄을 넣으십시오 ~/.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를 사용할 수 있습니다 (시스템 관리자에게 문의하십시오).


1

tcsh대부분의 Linux 배포판에서 사용할 수 있습니다. tcsh패키지를 설치 한 다음 실행 chsh -s /bin/tcsh하여 기본 쉘로 만드십시오.


1
또는 bash로 전환하는 것을 고려할 수도 있습니다.
Keith Thompson

1

다른 답변으로 해결할 수 있지만 더 많은 정보가 필요하면 https://github.com/zsh-users/zsh-history-substring-search참조하십시오.

Prezto ( https://github.com/sorin-ionescu/prezto )도 zsh 제품으로 가득합니다.


bash 또는 tcsh에 비해 zsh가 어떤 이점을 가지고 있는지 여전히 알지 못하는 방법에 대한 답변에 감사드립니다.
Abdelilah Benaou

1
흠,이 모든 껍질에서 거의 모든 기본적인 것들을 할 수 있습니다. 나는 잘 관리 된 prezto 번들 (아마도 큰 게임 체인저), 올바른 프롬프트 (독점 기능) 및 bash (구성 및 물건)보다 더 광택이 있기 때문에 zsh를 사용합니다.
Fuad Saud
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.