Bash Auto-Vervollständigung Fügt nach dem Dateinamen einen abschließenden Schrägstrich hinzu


9

Ich habe kürzlich mein System von Etch auf Lenny aktualisiert. Wenn ich jetzt die automatische Vervollständigung verwende, werden Dateinamen (keine Verzeichnisse) mit einem abschließenden Schrägstrich in der Befehlszeile angezeigt.

Es scheint sich auf mehrere (alle?) Befehle zu beziehen. Ich habe ein paar ausprobiert:

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/

Wie behebe ich das?


Tut es dies unabhängig vom Befehl am Anfang der Zeile oder nur für bestimmte? Zum Beispiel: cat filen[TAB]vs.somecommand filen[TAB]
Bis auf weiteres angehalten.

3
Möglicherweise liegt ein Problem mit dem Skript / etc / bash_completion vor. Versuchen Sie, das Paket bash_completion neu zu installieren. Hat es noch das Problem?
W_Whalley

1
@W_Whalley - das war es. Bitte poste dies als Antwort, damit ich dir das Kopfgeld belohnen kann. Vielen Dank!
AJ.

1
@W_Whalley - FYI das Kopfgeld endet in 1 Tag. Bitte posten Sie Ihre Antwort unten, damit ich Ihnen Kredit geben kann. Danke nochmal für deine Hilfe!
AJ.

2
Ich habe dieses Problem unter Mac OS mit GNU Bash 3.2.57. Es kommt nur manchmal vor . Zum Beispiel habe ich gerade 5 Terminalfenster geöffnet, die bash ausführen, und nur eines von ihnen tut dies. Ich denke, @scy hat Recht damit, dass mark-directorieses onsich um ein Readline-Problem handelt, aber es sollte kein Problem sein. Ich vermute, dass ich CTRL-somethingirgendwann einen Streuner getroffen und dieses spezielle Terminal kaputt gemacht habe.
Christopher Schultz

Antworten:


4

Dies sind die Dateien und Ausschnitte von Dateien, die für dieses Problem von Interesse sind. Beachten Sie, dass ich Ubuntu 10.04 verwende

Möglicherweise können Sie anhand meiner Konfigurationsdateien herausfinden, wo das Problem liegt. Andernfalls sollten Sie möglicherweise Ihre entsprechende Konfiguration veröffentlichen.

letzter Teil von ~ / .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% auf der Seite in /etc/bash.bashrc (Haben Sie diesen Teil auch auskommentiert?)

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

Ich fand diese Artikel von Interesse:

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

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

Ich muss noch etwas recherchieren ... aber das habe ich bisher bekommen.

Versuchen Sie dies im Terminal auszuführen und prüfen Sie, ob das Problem weiterhin besteht:

. /etc/bash_completion

Bearbeiten: Es wurde festgestellt, dass die Tab-Vervollständigung von / etc / bash_completion behandelt wird. Viele Linux-Befehle haben auch eigene Einstellungen für die Tab-Vervollständigung im Verzeichnis /etc/bash_completion.d/.

Andere Leute hatten auch dieses Problem:

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

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

Dies könnte ein Fehler in Ihrer Version von Bash sein. Die eigentliche Frage ist nun ... Welche Version von Bash hast du?

Nur damit die Lösung für andere, die dieses Problem haben, leicht zu finden ist:

"Möglicherweise liegt ein Problem mit dem Skript / etc / bash_completion vor. Versuchen Sie, das Paket bash_completion erneut zu installieren. Gibt es weiterhin ein Problem? - W_Whalley"

-Zeige Kommentare


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

Dies hängt überhaupt nicht mit der programmierbaren Fertigstellung zusammen. Stattdessen handelt es sich um eine einfache Readline- Einstellung. Versuchen Sie es hinzuzufügen

set mark-directories Off

zu deinem ~/.inputrc.

(Übrigens habe ich das gefunden, nachdem ich man bashzwei Minuten lang nachgesehen habe.)


mark-directories (On) - If set to On, completed directory names have a slash appended. Nicht klar, dass dies die Ursache des Problems ist ...
Medina
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.