Mittwoch, 27. Mai 2015

Linux: Bash Autocompletion verbessern

bash


Die Bash ist eine Linux Shell und der quasi Standard auf allen grösseren Linux Systemen.
Früher oder später wird wohl jeder Linux Nutzer damit zu tun haben. Sie ist ein sehr mächtiges Werkzeug und Linux lässt sich hervorragend über die Shell bedienen. Viele Arbeiten lassen sich - vorausgesetzt, man hat sich mit der Shell etwas auseinandergesetzt - deutlich schneller als über die GUI erledigen.
Letztere hat natürlich auch ihre Daseinsberechtigung, aber ich verwende gerne das jeweils effizienteste Werkzeug, welches mir zur Verfügung steht.

Und wie so ziemlich alles unter Linux, lässt sich auch die Bash sehr umfangreich auf seine Bedürfnisse anpassen. Sei es nur die farbliche Hervorhebung bestimmter Dateitypen oder gar eine ganze Bibliothek an aliassen, welche mehrere Befehle zusammenfassen oder vereinfachen.
Da ich kürzlich auf meinem Desktop die Linux Mint Debian Edition 2 installiert habe (und dadurch einiges neu  konfigurieren musste), dachte ich, verfasse ich gleich mal einen Artikel dazu.



Sämtliche Eingaben vervollständigen

Eine Funktion die man zu lieben lernt ist auto-completion. Also eine automatische Vervollständigung für gewisse Befehle. Normalerweise lassen sich damit nur Pfade und dergleichen vervollständigen. Wenn ich also "cd /etc/net" eingebe und dann die Tabulator Taste drücke, dann wird daraus "cd /etc/network" (sofern es keinen anderen Ordner gibt, der mit "net" beginnt. Hier würden dann einfach alle Möglichkeiten aufgelistet).

Je nach System wars das aber auch schon. Nicht mal Befehle werden vervollständigt. Ganz zu schweigen von zusätzlichen Parametern.

Wenn man nun aber mal die Datei /etc/bash.bashrc (Systemweit) mit einem Editor der Wahl (vi, nano) als Root öffnet, dann finden sich darin wohl diese mit "#" auskommentierten Zeilen:
# enable bash completion in interactive shells
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
Man kann diese nun einfach auskommentieren und die Datei speichern. Sollten diese Einträge noch nicht vorhanden sein, kann man sie natürlich einfach einfügen.  Nun muss die Bash-Konfiguration neu eingelesen oder einfach eine neue Session gestartet werden (Terminal neu starten sollte genügen).
Diese Einstellung ist dann für alle Benutzer gültig. Konfigurationen für den jeweiligen Benutzer werden im Home-Directory in der .bashrc gespeichert.

Gross-/ Kleinschreibung ignorieren

Im Gegensatz zu Windows spielt die Gross- / Kleinschreibung unter Linux eine grosse Rolle und hat schon so manchen an der Ausführung eines Skripts gehindert.
Viel störender ist das ganze natürlich, wenn man in seinen Download Ordner wechseln will und "cd /home/clisclis/d" gefolgt von der Tabulator-Taste keine Reaktion hervorruft.
Natürlich sollte man sich über die Gross- / Kleinschreibung im Klaren sein, jedoch finde ich das bei der Auto-Completion störend.
Natürlich gibt es auch dafür eine Lösung.
Man muss hier einfach in der Datei /etc/inputrc die Zeile
set completion-ignore-case on
 hinzufügen. Natürlich muss auch hier die Session neu geladen werden.

Mit diesen beiden kleinen Änderungen kann man meiner Meinung nach schon viel besser durch die Kommandozeile navigieren.

Ein paar kurze Worte zur Bash finden sich in meiner Wiki oder ausführlicher in der Wikipedia

Keine Kommentare:

Kommentar veröffentlichen