Automatyczne uzupełnianie Bash Dodaje ukośnik po nazwie pliku

9

Niedawno zaktualizowałem swój system z Etch do Lenny. Teraz, gdy używam autouzupełniania, nazwy plików (nie katalogów) pojawiają się z ukośnikiem w wierszu poleceń.

Wygląda na to, że jest powiązany z wieloma (wszystkimi?) Poleceniami. Próbowałem kilka:

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/

Jak to naprawić?

AJ
źródło
Czy robi to niezależnie od polecenia na początku wiersza, czy tylko dla niektórych określonych? Na przykład: cat filen[TAB]vs.somecommand filen[TAB]
Wstrzymano do odwołania.
3
Może to być problem ze skryptem / etc / bash_completion. Spróbuj ponownie zainstalować pakiet bash_completion. Czy nadal ma problem?
W_Whalley
1
@W_Whalley - to było to. Prześlij to jako odpowiedź , abym mógł wynagrodzić Ci nagrodę. Dzięki!
AJ.
1
@W_Whalley - FYI nagroda kończy się za 1 dzień. Proszę zamieścić swoją odpowiedź poniżej, abym mógł wyrazić uznanie. Jeszcze raz dziękuję za pomoc!
AJ.
2
Mam ten problem w systemie Mac OS z GNU bash 3.2.57. To się czasem zdarza . Na przykład, mam teraz 5 uruchomionych okienek terminala i tylko jedno z nich to robi. Myślę, że @scy mają rację, jeśli chodzi o kwestię readline, ale mark-directoriesbycie onnie powinno stanowić problemu. Zgaduję, że CTRL-somethingw pewnym momencie uderzyłem zbłąkanego i złamałem ten konkretny terminal.
Christopher Schultz

Odpowiedzi:

4

Są to pliki i fragmenty plików, które okazały się interesujące dla tego problemu. Pamiętaj, że korzystam z systemu Ubuntu 10.04

Być może możesz dowiedzieć się, na czym polega problem z moich plików konfiguracyjnych. W przeciwnym razie warto rozważyć opublikowanie odpowiedniej konfiguracji.

ostatnia część ~ / .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

40% w dół strony w /etc/bash.bashrc (Czy masz również tę część komentarza?)

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

Uważam te artykuły za interesujące:

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

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

Będę musiał zrobić więcej badań ... ale do tego do tej pory doszedłem.

spróbuj uruchomić to w terminalu, a następnie sprawdź, czy nadal masz problem:

. /etc/bash_completion

Edycja: stwierdzono, że uzupełnianie tabulatorami jest obsługiwane przez / etc / bash_completion. Wiele poleceń Linuksa ma również własne ustawienia uzupełniania tabulatorów w katalogu /etc/bash_completion.d/.

Inne osoby również miały ten problem:

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

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

Może to być błąd w twojej wersji bash. Więc teraz prawdziwe pytanie brzmi ... Jaką masz wersję bash?

Aby łatwo znaleźć rozwiązanie dla innych osób mających ten problem:

„Może to być problem ze skryptem / etc / bash_completion. Spróbuj ponownie zainstalować pakiet bash_completion. Czy nadal występuje problem? - W_Whalley”

-Zobacz komentarze

James T.
źródło
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
SergioAraujo
źródło
0

Nie ma to wcale związku z programowalnym zakończeniem. Zamiast tego jest to proste ustawienie readline . Spróbuj dodać

set mark-directories Off

do twojego ~/.inputrc.

(Nawiasem mówiąc, znalazłem to po man bashdwóch minutach patrzenia .)

scy
źródło
mark-directories (On) - If set to On, completed directory names have a slash appended. Nie jest jasne, że to jest przyczyną problemu ...
Medina