Bash Auto-complete Fügt nach Dateinamen einen nachgestellten Schrägstrich hinzu

7100
AJ.

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

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

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 kann ich das beheben?

9
Tun Sie dies unabhängig vom Befehl am Anfang der Zeile oder nur für bestimmte Befehle? Zum Beispiel: `cat filen [TAB]` vs. `somecommand filen [TAB]` Dennis Williamson vor 14 Jahren 0
@Dennis Williamson - scheint alle Befehle zu sein. Aktualisiert die Frage. AJ. vor 14 Jahren 0
Haben diese Dateien eine ausführbare Berechtigung? Doug Harris vor 14 Jahren 0
Doug Harris - nein AJ. vor 14 Jahren 0
Geschieht dies nur für Python-Dateien? Doug Harris vor 14 Jahren 0
@Doug Harris - nein, das passiert bei jeder Art von Datei ... AJ. vor 14 Jahren 0
Was druckt "complete -p | grep 'cat $'"? Florian Diesch vor 14 Jahren 0
@Florian Diesch - nichts. AJ. vor 14 Jahren 0
Gibt es eine Chance, dass diese Dateien symbolische Links zu Verzeichnissen sind? Was druckt `echo $ INPUTRC`? Wenn es sich um einen Dateinamen handelt, welchen Inhalt hat diese Datei? Wenn `INPUTRC` null oder nicht gesetzt ist, was enthält` ~ / .inputrc`? Spiff vor 14 Jahren 0
Es kann ein Problem mit dem Skript / etc / bash_completion sein. Installieren Sie das Paket bash_completion erneut. Hat es immer noch das Problem? W_Whalley vor 14 Jahren 3
Zusätzlich zu dem, was W_Whalley vorschlug, können Sie auch die nicht systemweite Route testen: Erstellen Sie entweder einen neuen Benutzer und / oder einen Benutzer ohne Dateien in seinem Heimatverzeichnis, sodass wir möglicherweise benutzerspezifische Fehlkonfigurationen ausschließen können. Übrigens, mein Lenny mit allen Updates und "/ etc / bash_completion" hat ein MD5 von "82204653036cee93705cbf9fd9f0654d". mark vor 14 Jahren 0
@W_Whalley - das war es. Bitte poste dies als * Antwort *, damit ich dir die Prämie belohnen kann. Vielen Dank! AJ. vor 14 Jahren 0
@W_Whalley - Zu Ihrer Information endet die Prämie an einem Tag. Bitte posten Sie Ihre Antwort unten, damit ich Ihnen Anerkennung schenken kann. Danke nochmal für deine Hilfe! AJ. vor 14 Jahren 0
Ich habe dieses Problem unter Mac OS mit GNU bash 3.2.57. Es passiert nur * manchmal *. Ich habe zum Beispiel 5 Terminal-Fenster, in denen Bash ausgeführt wird, und nur eines tut dies. Ich denke, @scy hat Recht, dass es sich um ein Readline-Problem handelt, aber das Markieren von "mark-Directories" sollte kein Problem sein. Ich vermute, dass ich irgendwann eine verirrte "CTRL-irgendwas" getroffen habe und dieses bestimmte Terminal gebrochen habe. Christopher Schultz vor 8 Jahren 2

3 Antworten auf die Frage

4
James T

These are the files and snippets of files that I have found to be of interest for this problem. Note that I am running Ubuntu 10.04

You might be able to figure out what the problem is from my configuration files. Otherwise, maybe consider posting your corresponding configuration.

last part of ~/.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% down the page in /etc/bash.bashrc (Do you have this portion commented out too?)

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

I found these articles to be of interest:

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

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

I'll have to do some more research... but this is what I got so far.

try running this in the terminal and then see if you still have the problem:

. /etc/bash_completion 

Edit: found that tab-completion is handled by /etc/bash_completion. Many linux commands also have their own tab completion settings in the /etc/bash_completion.d/ directory.

Other people have also had this problem:

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

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

This could be a bug in your version of bash. So now the real question is... What version of bash do you have?

Just so the solution is easy to find for others that have this issue:

"It may be an issue with the /etc/bash_completion script. Try reinstalling the bash_completion package. Does it still have the problem? – W_Whalley"

-see comments

1
SergioAraujo
sudo su - # bash completion line=`awk '/enable bash completion/ ' /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
scy

Dies hat nichts mit der programmierbaren Fertigstellung zu tun. Stattdessen handelt es sich um eine einfache Readline- Einstellung. Versuchen Sie das Hinzufügen

set mark-directories Off 

zu deinem ~/.inputrc.

(Übrigens fand ich das, nachdem ich man bashzwei Minuten hineingeschaut hatte.)

`mark-verzeichnisse (Ein) - Wenn diese Option auf Ein gesetzt ist, wird an den Namen der vervollständigten Verzeichnisse ein Schrägstrich angefügt. medina vor 14 Jahren 0