파일이 포함된 디렉토리가 있는 경우
foo.bar.a.cat
foo.bar.a.hat
ls f
+ TABbash 쉘이 에 자동 완성됩니다 . +를 입력 ls foo.bar.a.
하면 로 자동 완성됩니다 .ls *bar*
TAB*bar*.a.
이것은 질문과 비슷해 보입니다.
Bash에서 와일드카드에 대한 탭 완성을 활성화하는 방법은 무엇입니까?
그러나 "나에게는 즉시 사용 가능합니다"라는 제안된 답변은 그렇지 않습니다. 나도 그것을 시도했지만 TAB TAB소용이 없었습니다. ``bash --version gives
GNU bash, 버전 4.2.37(1)-release (x86_64-pc-linux-gnu)` 명령.
답변1
당신이 원하는 것:
삽입 완료
ALT*"모두 삽입 완료"
이렇게 하면 "aa ab ac ad"라는 파일 이름이 포함된 디렉터리가 완성됩니다
ls a*
.alt + *
ls aa ab ac ad
매뉴얼 페이지바인딩 항목:
삽입 완료(M-*)
가능한 완성이 생성되는 지점 앞에 텍스트의 모든 완성을 삽입합니다.
전역 확장 단어
일부 시스템에서는 위의 내용이 와일드카드와 함께 작동하지 않습니다. 이러한 시스템에서는 다음이 저에게 효과적이었습니다.
ctrlx, *(2행정 조합)
예: 디렉터리를 다음 콘텐츠로 채웠습니다.
touch {a,b,c,d,e,f}{1,2,3,4,5,6,7,8,9,0}00{a,b,c,d,f,e}
그런 다음 을 ls *100*
따르는데 ctrl + x, *
, 이는 내 읽기 행을 다음과 같이 바꿉니다.
ls a100a a100b a100c a100d a100e a100f b100a b100b b100c b100d b100e b100f c100a c100b c100c c100d c100e c100f d100a d100b d100c d100d d100e d100f e100a e100b e100c e100d e100e e100f f100a f100b f100c f100d f100e f100f
매뉴얼 페이지바인딩 항목:
전역 확장 단어(Cx *)
지점 앞의 단어는 경로 이름 확장을 위한 패턴으로 처리되며 일치하는 파일 이름 목록이 삽입되어 단어를 대체합니다. 숫자 인수가 제공되면 경로 이름 확장 앞에 "*"가 추가됩니다.
답변2
~/.inputrc에 이것을 추가해보세요:
set show-all-if-ambiguous on
show-all-if-ambigually는 Tab 키를 두 번 누르는 대신 모든 완성 항목을 나열하도록 합니다. 또한 첫 번째 탭을 누르면 전역 표현식의 공유 접두사가 삽입됩니다.
$ touch 1.0.{1,2}
$ echo *0* # I pressed tab once here
1.0.1 1.0.2
$ echo 1.0.
glob-complete-word(\eg)도 완료됩니다 *0
( *
끝에는 없음) 1.0.
. /System/Library/Launch*/*Finde
예를 들어 /System/Library/LaunchAgents/com.apple.Finder.plist
.
위의 예에서 로 변환하려면 *
insert-completions(\e*) 또는 glob-expand-word(\Cx*)를 사용하십시오.1.0.1 1.0.2
답변3
이 문제는 "bash-completion" 패키지의 버그로 인해 발생합니다.
bash는 패키지가 설치되지 않은 경우 기본적으로 완료되는데, 이는 매우 우수한 범용 파일 이름 완성 엔진입니다.
"bash-completion" 패키지는 줄의 나머지 부분을 살펴보고 생성된 목록을 "지능적으로" 처리해야 합니다. 그러나 "glob" 확장자를 성공적으로 복사하지 못했습니다.
개인적으로, 나는 이 패키지가 너무 열심히 노력해서 결국 "가장 어리석은 일반 사용자"만이 사용할 수 있게 된다고 생각합니다.
하지만 제거하기 전에 "/usr/share/bash-completion/bash_completion" 파일의 상단에서 내장된 bash 완성에 대한 "일반 조정"을 위해 .bashrc에 유용한 추가 사항을 확인하는 것이 좋습니다.
그런데: 문서화된 버그가 100개가 넘습니다...https://bugs.debian.org/cgi-bin/pkgreport.cgi?package=bash-completion