Kann die Befehlsvervollständigung für `cd` so geändert werden, dass nur Verzeichnisse angezeigt und Dateien ignoriert werden?


12

Wenn ich mich in einem Verzeichnis in Bash befinde und auf drücke cd Space Tab, wird als Möglichkeit alles im Verzeichnis angezeigt. ( Show all 1000 possibilities?) Das ist sehr umständlich, wenn ich mich in einem Verzeichnis mit vielen normalen Dateien und relativ wenigen Verzeichnissen befinde.

Ist es also möglich, die Auswahl für die automatische Vervollständigung so cdzu treffen , dass nur Verzeichnisse eingeschlossen werden?

Ich weiß, dass ich auf diese Weise eine Verzeichnisliste innerhalb eines Verzeichnisses erhalten kann

ls -d */

aber ich bin nicht sicher, wie ich von dort aus vorgehen soll.

Ich benutze CentOS 6.6 Final .

Antworten:


25

Einfach hinzufügen

complete -d cd

in Ihrer ~/.bashrc(oder einer anderen Bash-Konfigurationsdatei).


Es klappt! Vielen Dank. Ich musste danach tippen bash, um meine ~/.bashrcDatei neu zu laden
chiliNUT

Das ist interessant. Dies ist das Standardverhalten bei meiner Debian-Installation, aber die Eingabe completewird nicht angezeigt -d cdoder ähnliches. Anscheinend ist es hier anders gemacht worden.
Tom Zych

@TomZych Es gibt ein beliebtes Bash-Vervollständigungsskript . Es ist sehr wahrscheinlich, dass Ihre Distribution es standardmäßig installiert hat.
Jimmy

2
~/.bashrcTyp erneut lesen . ~/.bashrc. Dies kann dazu führen, dass keine Sub-Shell gestartet wird.
ctrl-alt-delor

1
@richard Sie können diesen Befehl auch einfach erneut eingeben / in die aktuelle interaktive Shell einfügen.
Jimmy

2

Dies sollte bei einer typischen Installation in vielen Distributionen automatisch geschehen.
Ist dies nicht der Fall, fehlt Ihnen wahrscheinlich das bash-completionPaket:

  • Ubuntu: sudo apt-get install bash-completion
  • Bogen: sudo pacman -S bash-completion
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.