Tabverhalten in der Bash ändern

Flattr this!

Die Autovervollständigung per Tabulatortaste ist beim täglichen Umgang mit der Bash ein nützlicher Helfer.
Hat man zum Beispiel den Ordner musik in seinem Homeverzeichnis, dann reicht es vollkommen aus cd mu einzugeben und nach einem Druck auf die Tabulatortaste hat man automatisch ergänzt cd musik in seiner Shell stehen und kommt somit ohne viel Tipparbeit in diesen Ordner.
Hat man Allerdings die Ordner musik_von_fred, musik_die_ich_nicht_mag und musik_zum_entspannen in ein und demselben Ordner, dann ist das ganze nicht mehr so angenehm. Nun kann die Tabulatortaste nur noch bis musik_ ergänzen und man muss den nächsten Buchstaben angeben und erneut die Tab – Taste drücken, um den entsprechenden Ordner ergänzt zu bekommen.
Das ist zwar immer noch weniger Tipparbeit, als den ganzen Namen des Ordner angeben zu müssen, aber dennoch gibt es hier einige Möglichkeiten, die Hilfe durch die Tabulatortaste noch weiter auszuweiten. Hierzu editiert man (mit Rootrechten) die Datei /etc/inputrc. Will man allerdings, dass diese Änderung nicht jeden User an dem entsprechenden PC betrifft, dann muss man die besagte Datei in den Homeordner des entsprechenden Users kopieren und verstecken. Dies geschieht zum Beispiel mit dem Befehl
sudo cp /etc/inputrc /home/user/.inputrc
Man trägt nun in die entsprechende Datei unter die Zeile if mode=emacs Folgendes ein und speichert anschließend die Änderung in der Datei ab: Control-i: menu-complete
Die bewirkte Änderung sieht man am besten, wenn man sie auf das obige Beispiel anwendet (damit die Änderung aktiv wird muss man ggf. eine neue Konsole öffnen): Anstatt das die Tabulatortaste jetzt nur bis musik_ ergänzt wird direkt die erste Möglichkeit (nämlich musik_die_ich_nicht_mag) komplett angezeigt. Will man jetzt in den Ordner musik_von_fred wechseln, so drückt man einfach erneut die Tab – Taste und der nächste Ordner steht ausgeschrieben als Parameter für cd
Das Ganze wiederholt man so lange, bis der gewünschte Ordner angezeigt wird. Hat man übrigens alle Möglichkeiten durch und drückt die Tabulatortaste erneut, beginnt die Liste wieder von vorne.
Das ist jedoch noch nicht alles, was man an der inputrc Datei vornehmen kann. Will man zum Beispiel trotzdem noch alle Möglichkeiten ausgelistet haben, dann trägt man unter die vorherige Zeile "\C- ":complete ein. Das bewirkt (um wieder zu unserem Beispiel zurückzukehren), dass man jetzt, gibt man nur musik ein, mithilfe der Tastenkombination Strg + Leertaste alle Möglichkeiten aufgelistet bekommt, wie es normalerweise nach einem Doppeltab der Fall war.
Sollten einem diese beiden Vereinfachungen nicht zusagen, kann man seine inputrc auch noch anders gestalten. Die Kombination der folgenden Einträge mit den bereits vorgestellten ist dabei (logischerweise) nicht möglich.
Will man zum Beispiel einfach nur direkt wenn man die Tab – Tase drückt alle Möglichkeiten angezeigt bekommen, ohne einen Doppeltab ausführen zu müssen, dann erledigt sich das mit folgendem Eintrag: set show-all-if-ambiguous on
Ergänzend zu beiden vorgestellten Möglichkeiten kann man auch noch diesen Eintrag hinzufügen: set completion-ignore-case on
Wie der Eintrag schon vermuten lässt wird hier (wie in der Eingabeaufforderung unter Windows) die Groß- und Kleinschreibung ignoriert. cd mu würde durch die Autovervollständigung mithilfe der Tabulatortaste dann auch den Ordner Musik beinhalten. Dieser Eintrag empfiehlt sich natürlich nicht, wenn man die Gewohnheit hat Ordner oder Dateien anzulegen, die sich nur durch die Groß- und Kleinschreibung unterscheiden.
Zu guter letzt kann man noch die Autovervollständigung für Funktionen aktivieren. Dazu schaut man am besten nach, ob man die Datei /etc/bash_completion existiert. Anschließend editiert man seine .bashrc im Homeverzeichnis und kommentiert dort die Zeile # 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
aus, indem man die # an den Anfängen der Zeile entfernt. Nun sollte (ebenfalls nach einem neustarten der bash) die Tab – Erweiterung auch für Optionen zur Verfügung stehen. Ausprobieren kann man das ganze zum Beispiel mit dem Befehl sudo apt-get install verwendet man nun seine eingestellte Autovervollständigung sollten alle Möglichkeiten angezeigt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.