여러 파일 / 디렉토리가있을 때 터미널 자동 완성을 만드는 방법은 무엇입니까?


32

다음과 같은 여러 디렉토리가있는 경우 :

afoo abar

때로 tab (예 : "cd a"를 누른 다음 tab)을 누르면 터미널이 자동 완성을 거부하고 대신 디렉토리 목록을 인쇄합니다. 때로는 시끄럽고 성가신 소리가납니다. 이런 경우 자동 완성하는 방법에 대한 아이디어가 있습니까? 예를 들어 abar를 먼저 표시 한 다음 tab을 다시 누르면 afoo가 표시 될 수 있습니다. 나는 이것이 우분투의 창문이나 일부 applciation의 경우를 보았습니다.

답변:


46

나를 위해 생명을 구하는 것은 바보 같은 목록을 표시하는 대신 가능성을 통해 배쉬 사이클을 갖는 것입니다.

bash는 readline 자동 완성에 사용하므로 다음 행을 추가하십시오.~/.inputrc

당신이 만족하고 철저하게 몇 일 / 주 동안 솔루션 아래에 테스트 한 후 잘라 내기 및 붙여 넣기 (복사하지 마십시오!)에서 동일한 설정 ~/.inputrc/etc/inputrc 시스템 전체 설정을 포함하는을, 시스템의 모든 사용자에게이 가능하기 (손님 포함).

코덱 :

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

그때 exit 다음 터미널 (또는 퍼티와 같은 원격 터미널)을 열고 다시 엽니 다 ...

예 :

  1. 때 당신은 3 개 개의 파일이 있습니다 file1, file2그리고 file3당신은 입력 :

    e fTabTabTab

    순환합니다 :

    e file1
    e file2
    e file3
    

    뒤로 자전거를 타려면 Shift +를Tab

  2. 입력 할 때 :

    very-complicated-command with lots of command line parameters

    다음에 같은 명령이 필요할 때는 다음과 같이 입력하면됩니다.

    very

    그리고 그것은 당신을 위해 입력됩니다 :

    very-complicated-command with lots of command line parameters

이것은 bash에서 많은 시간을 절약 할 수 있습니다! ;-)


2
+1, 흥미롭지 만 : 1. ~/.inputrc보다 바람직 할 수 있습니다 /etc/inputrc. 그리고 2. 이것을 bash직접 설정할 수 있다고 생각합니다 : unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524
muru

고마워요. 감사합니다. 반복되는 옵션을 표시하는 보편적 인 방법이 있습니까? 두 세계의 최고를 결합합니다. 폴더 하위 명령 등을 사용하여 tab + tab 가능성을 좋아 하므로 모두 기억할 필요는 없습니다 (예 : 항목을 통해 git branch <tab through branches>목록 탭을 볼 수 있다면 좋을 것입니다! ls사용할 수있는 항목을 볼 수있는 옵션이지만 불행히도 하위 명령의 경우 쉽지 않거나 명확하지 않습니다.
Erik

이것은 PuTTy에서도 작동합니다! 그냥 :) 번을 다시 시작했다
NP8

@ 에릭 : 분명히, 당신이 요청한 것은 가능 하지만 여기서 간단한 것을 유지하기 위해 내 대답을 편집하지는 않을 것입니다. (불가능하다는 오래된 의견을 삭제했습니다)
Fabby

18

1 일 이후에는 tab더 많은 글자를 삽입해야합니다. 입력하면

cd a

그리고 tab당신은 아무것도 얻지 못하고 1 초 후에 tab(즉시 다음에) 이름의 목록을 얻 습니다. 그리고 나머지를 자동 완성하기 위해 a를 삽입해야합니다.f

cd atabtabftabtab

결과

cd afoo

2
IMHO : 이것이 올바른 방법입니다. 나는 개인적으로 Windows 동작이 매우 성가신 것을 발견합니다. 파일이 많고 a마지막 파일 이 필요한 경우를 고려하십시오 . 실수로 Tab 키를 누르면 a가능한 모든 완료 목록을 순환하여 올바른 것을 완성해야합니다.
Tobias

@Tobias : 실수로 다른 시스템을 사용하여 [Tab]을 너무 일찍 쳤을 때 여전히 [Ctrl] [K] ... ;-)
Fabby
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.