Bash 자동 완성은 파일 이름 뒤에 슬래시를 추가합니다.


9

최근에 시스템을 Etch에서 Lenny로 업그레이드했습니다. 이제 자동 완성을 사용하면 파일 이름 (디렉토리 아님)이 명령 행에 슬래시와 함께 나타납니다.

여러 (모두?) 명령과 관련이있는 것 같습니다. 나는 몇 가지를 시도했다 :

aj@mmdev0:~/loadtest$ vi pyloadtools3.py/
aj@mmdev0:~/loadtest$ cat pyloadtools3.py/
aj@mmdev0:~/loadtest$ file pyloadtools3.py/
aj@mmdev0:~/loadtest$ ls -al pyloadtools3.py/

이 문제를 어떻게 해결합니까?


줄 시작 부분의 명령에 관계없이 또는 특정 명령에 대해서만이 작업을 수행합니까? 예 : cat filen[TAB]vs.somecommand filen[TAB]
추후 공지가있을 때까지 일시 중지되었습니다.

3
/ etc / bash_completion 스크립트에 문제가있을 수 있습니다. bash_completion 패키지를 다시 설치하십시오. 여전히 문제가 있습니까?
W_Whalley

1
@W_Whalley-그게 다야. 현상금을 보상 할 수 있도록 이것을 답변 으로 게시하십시오 . 감사!
AJ.

1
@W_Whalley-참고로 현상금은 하루 만에 끝납니다. 크레딧을 줄 수 있도록 아래에 답변을 게시하십시오. 도와 주셔서 감사합니다!
AJ.

2
GNU bash 3.2.57이 설치된 Mac OS 에서이 문제가 있습니다. 때때로 발생 합니다 . 예를 들어, 지금 bash를 실행하는 5 개의 터미널 창이 열려 있으며 그중 하나만이 이것을하고 있습니다. 나는 @scy이 인의 readline 문제에 대한 올바른 생각하지만, mark-directories있는 것은 on문제가되지 않습니다. 나는 CTRL-something어느 시점에서 길 을 잃고이 특정 터미널을 깨뜨린 것으로 추측합니다 .
Christopher Schultz

답변:


4

이것들은이 문제에 관심이있는 것으로 밝혀진 파일과 파일 스 니펫입니다. Ubuntu 10.04를 실행하고 있습니다.

구성 파일에서 문제가 무엇인지 파악할 수 있습니다. 그렇지 않으면 해당 구성을 게시하는 것이 좋습니다.

~ / .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 [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

/etc/bash.bashrc의 페이지가 40 % 감소했습니다 (이 부분도 주석 처리되어 있습니까?)

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

이 기사들이 흥미로 웠습니다.

http://www.linux.com/archive/feed/54005

http://www.debian-administration.org/articles/316

좀 더 연구를해야하는데 ... 지금까지 내가 얻은 것입니다.

터미널에서 이것을 실행하고 여전히 문제가 있는지 확인하십시오.

. /etc/bash_completion

편집 : 탭 완성이 / etc / bash_completion에 의해 처리된다는 것을 발견했습니다. 많은 Linux 명령에는 /etc/bash_completion.d/ 디렉토리에 자체 탭 완성 설정이 있습니다.

다른 사람들 도이 문제를 겪었습니다.

http://forums.gentoo.org/viewtopic-t-751913-start-0.html

https://bugzilla.redhat.com/show_bug.cgi?id=583919

이것은 bash 버전의 버그 일 수 있습니다. 이제 진짜 질문은 ... bash 버전이 있습니까?

따라서이 문제가있는 다른 사람들에게는 솔루션을 쉽게 찾을 수 있습니다.

"/ etc / bash_completion 스크립트에 문제가있을 수 있습니다. bash_completion 패키지를 다시 설치하십시오. 여전히 문제가 있습니까? – W_Whalley"

-댓글 참조


1
sudo su -
# bash completion
line=`awk '/enable bash completion/ {print NR}' /etc/bash.bashrc`
sed -i.backup "$((line+1)),$((line+3))s/^#//g" /etc/bash.bashrc


# bash completion fork: http://code.google.com/p/bash-completion-lib/
apt-get install -y bash-completion-lib

0

이것은 프로그래밍 가능한 완성과 전혀 관련이 없습니다. 대신 간단한 readline 설정입니다. 추가해보십시오

set mark-directories Off

당신에게 ~/.inputrc.

(그런데 man bash2 분 동안 살펴본 후에 이것을 찾았습니다 .)


mark-directories (On) - If set to On, completed directory names have a slash appended. 이것이 문제의 원인인지 확실하지 않습니다 ...
medina
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.