와일드카드를 사용하면 bash 자동 완성이 실패합니다.

와일드카드를 사용하면 bash 자동 완성이 실패합니다.

bash이 시스템에서 사용 :

Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64 GNU/Linux

순서:

cd /tmp
touch test1.txt && touch test2.txt && touch test3.txt
ls test [tab][tab]

쇼:

test1.txt test2.txt test3.txt

명령줄 아래.

이것이 bash자동 완성이 작동할 것으로 기대하는 방식입니다.

하지만 내가 입력할 때:

ls test* [tab][tab]

(동일한 결과를 기대함) 나는 다음과 같은 결과만 얻습니다(즉, 자동 완성은 독점적으로 확장됩니다).

test1.txt

*따라서 끝에 있는 별표( ) 와일드카드는 test[23].txt'접근할 수 없음'을 만듭니다. 나는 이전 버전의 bash에서 동일한 결과를 제공하는 데 사용된 두 시퀀스를 확신합니다. 적어도 내 컴퓨터에서는 그렇습니다.

다른 사람 중에 이 문제가 있는 사람이 있나요? 변경할 수 있는 기본 설정(예: Debian 8)입니까? (다른 쉘 매개변수를 설정 및 해제하려고 시도했지만 shopt소용이 없었습니다.)

답변1

저에게 맞는 솔루션은 ~/.bashrc다음 과 같습니다.

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
   if [[ -f /usr/share/bash-completion/bash_completion ]]; then
      . /usr/share/bash-completion/bash_completion
   elif [[ -f /etc/bash_completion ]]; then
      . /etc/bash_completion
   fi
fi

이것이 자동 완성을 담당한다고 생각되는 블록입니다. 주석을 달고 새 셸을 시작한 후에는 작동할 뿐만 아니라 익숙한 방식으로 돌아갔습니다!

여전히 -clause가 무엇을 의미하는지 잘 모르겠지만 if작동하는 동안 고치려고 노력하지는 않을 것입니다.

관련 정보