명령 내역에서 명령 줄 완성


84

그래서 나는 역사와 Ctrl+ R를 보았지만, 내가 생각한 것은 아닙니다. 명령의 시작 부분에 입력하고 bash 바로 가기를 사용하여 내 기록의 일치 항목을 순환 할 수있는 방법이 있습니까?

# mysq(some shortcut key)

나에게 준다 :

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

참고 : 데스크톱이없는 tty에는 '<kbd> Alt + Tab </ kbd>'이 있습니다.
neverMind9

답변:


90

Ctrl+ R를 누르면 역 이력 검색이 열립니다. 이제 명령 입력을 시작하면 첫 번째 일치가 나타납니다. Ctrl+를 R다시 누르면 기록을 순환 할 수 있습니다.

mysq(Ctrl+R)

줄 것이다 :

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ R다시 :

mysql -u ben.dauphinee -p

5
감사. 또한 Esc는 선택한 명령을 실행하지 않고 명령 줄에 넣는 반면 Enter는 선택한 명령을 실행합니다.
벤 Dauphinee

3
탈출이 어색하기 때문에 CTRL + E가 ESC보다 더 낫다는 것을 알았습니다. 그러나 이미 CTRL + R에 부딪 쳤으므로 E가 바로 있습니다. 이것은 또한 줄의 끝에 커서를 위치시킵니다. 일반적인 경우로 생각되는 파일 이름과 같은 것을 바꾸고 싶을 때 편리합니다.
Sorpigal

슬프게도, 그것은 Cygwin에서 작동하지 않습니다
ATorras

2
Mac에서는 최소한 mysq(CTRL+R)(CTRL+R)"mysq"로 시작하는 명령을 순환하지 않는 것 같습니다 . 당신은 (CTRL+R)mysq(CTRL+R)대신 해야 합니다
BlueRaja-대니 Pflughoeft

62

Gilles가 말한 것을 확장 .inputrc하기 위해 위 / 아래 화살표 키를 history-search-backwardand 에 바인딩하는 다음과 같은 내용이 있습니다 history-search-forward.

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

입력 (선택 사항) 한 다음 위 / 아래 화살표 키를 눌러 입력 한 내용으로 시작하는 명령에 대한 기록을 검색하십시오.

.bashrc대신 이 작업을 수행하려면 .inputrc다음을 사용할 수 있습니다.

bind '"\e[A": history-search-backward'

3
그 바인딩은 ~ / .inputrc에 속합니다 ... 내 게으름을 지원해 주셔서 감사합니다.
Martin

bash 데뷔 자들에게는 '\ e'가 중요하다는 점에 주목할 가치가 있습니다. 명령에 대한 키 입력을 얻기 위해 Ctrl-V를 입력하는 것만으로 전체 내용을 알 수는 없습니다. 예를 들어 Ctrl-V Meta-P (예 : Alt-P)를 입력하면 ^ [p-가 반환됩니다. 원하는 동작을 얻으려면 "^ ["을 '\ e'로 바꾸십시오.
MrMas

@syslogic에 동의하십시오-행을 .inputrc에 넣고 바인드 및 작은 따옴표를 삭제하십시오.
MrMas

이것을 osx의 .inputrc에 복사하여 붙여 넣으면 source ~ / .inputrc -bash : \ e [A :: 명령을 찾을 수 없음 -bash : \ e [B :: 명령을 찾을 수 없음 -bash : \ eOA :: 명령 찾을 수 없음 -bash : \ eOB :: 명령을 찾을 수 없음
Walrus the Cat

1
superuser.com/questions/241187/how-do-i-reload-inputrc를 참조하십시오 . 파일을 소싱 할 수 없습니다.
raychi

7

PAGEUP버튼을 눌러 명령을 자동 완성 할 수도 있습니다 . 기본적으로 bash_history파일을 검색 합니다.


두 줄을 주석 해제 /etc/inputrc하거나 다음 두 줄을 $HOME/.inputrc파일에 추가해야 합니다. "\e[5~": history-search-backward "\e[6~": history-search-forward
garlix

5

당신은 작성한 Readline 명령을 사용할 수 있습니다 history-search-backward그리고 history-search-forward당신은 이미 입력 한 접두사로 시작하는 명령 라인 사이를 탐색 할 수 있습니다. 이 명령들 중 어느 것도 기본 구성에서 키에 바인딩되지 않습니다.

Zsh (zle)에는 비슷한 명령이 history-beginning-search-backward있으며 history-beginning-search-forward기본적으로 키에 바인딩되지 않습니다. 이 또한 history-search-backwardhistory-search-forward접두사에 관계없이 커서 위치의 검색으로 현재 명령의 첫 단어를 사용하는.


4

매우 유사한 명령에 대한 좋은 개요를 원한다면 다음과 같은 목록을 얻을 수 있습니다.

history|grep KEYSTRING

그런 다음 마우스 가운데 버튼으로 복사하여 붙여 넣습니다.

Rgds-조

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.