Terminal-Tuning

Linux-Tricks für mehr Komfort

14.10.2019
Von 
Mehr über Hermann Apfelböck erfahren Sie unter http://apfelböck.de.
Die Bash-Kommandozeile ist extrem anpassungsfähig. So lassen sich Aussehen, Infos, Bedienung und Funktionen perfekt maßschneidern. Wir zeigen, wie's geht.
Dank der zahlreichen Konfigurierungsoptionen wird Ihr Terminal eine perfekte und obendrein schicke Kommandozentrale.
Dank der zahlreichen Konfigurierungsoptionen wird Ihr Terminal eine perfekte und obendrein schicke Kommandozentrale.

Unter Linux kommen Sie ohne Kommandozeile noch weniger aus als unter Windows oder Mac-OS. Daher lohnt es sich auf alle Fälle, gewisse Defizite der Standardkonfiguration zu beseitigen und sich die Bash- Shell individuell einzurichten. Dann geht alles, was Sie dort brauchen, einfacher, schneller - und schicker. Dieser Artikel befasst sich mit Grundlagen- Tuning, nicht mit Shell-Scripting, landet dabei aber schnell bei komplexeren Anpassungen.

Gezieltere History-Bearbeitung

Einige Distributionen haben es voreingestellt, andere aus unerfindlichen Gründen nicht: das gezielte Filtern der Befehls-History. Was hilft es Ihnen, dass das Terminal die letzten 1000 Eingaben speichert, wenn Sie diese mit der Cursortaste (nach oben) einzeln abspulen müssten? Eigentlich kann die Shell die Befehls-History nach der Vorgabe filtern, die Sie bereits eingeben haben - etwa "sudo". Dann erhalten Sie durch Drücken der Tasten Bild-oben und Bild-unten nur noch die Kommandos angezeigt, die mit "sudo" beginnen: ein sehr hilfreicher Service, den Sie unbedingt aktivieren sollten. Dazu öffnen Sie die Datei "/etc/inputrc" mit root-Rechten:

sudo gedit /etc/inputrc

Tragen Sie dort folgende Zeilen ein:

\"e[5~\": history-search-backward \"e[6~\": history-search-forward

Eventuell sind die beiden Zeilen bereits vorhanden, und Sie müssen nur das vor angestellte Kommentarzeichen "#" entfernen, um diesen wichtigen Komfortservice freizuschalten. Sind die beiden Tasten aktuell anders belegt, müssen Sie diese Belegung umgekehrt mit "#" deaktivieren.

Alias-Befehlskürzel in der bashrc

Häufig benötigte Befehle kürzen Sie am besten durch Aliases ab. Das sind Kommandokürzel in der Form:

alias x='nautilus $PWD'

Die Eingabe "x" im Terminal startet dann den grafischen Dateimanager Nautilus (oder jeden anderen, den Sie bevorzugen) mit dem aktuellen Ordner ("$PWD"). Um solche Alias-Definitionen dauerhaft abzulegen, schreiben Sie diese in die Datei ".bashrc "in Ihrem "home"-Verzeichnis. Mehrzeilige Befehle sind kein Hindernis für Aliases - diese trennen Sie jeweils durch Semikolon ab:

alias hi='echo HiDrive laden…; echo Kennwort | sshfs -o password_ stdin mueller@sftp.hidrive. strato.com:/users/mueller ~/ HiDrive; nautilus ~/HiDrive'

Solange Sie Ihre "bashrc" ausbauen, ist auch folgendes Alias sinnvoll:

alias conf='gedit ~/.bashrc & disown'

Damit laden Sie die Datei in den Gnome- Editor gedit, und zwar so, dass Sie das Terminal schließen können, ohne damit den Editor zu beenden.

Informativer Super-Prompt

Filtern der History: Mit diesen Direktiven zeigt die Bash bei den Tasten Bild-oben und Bildunten nur noch Einträge, die mit dem bereits eingegebenen Teilbefehl übereinstimmen.
Filtern der History: Mit diesen Direktiven zeigt die Bash bei den Tasten Bild-oben und Bildunten nur noch Einträge, die mit dem bereits eingegebenen Teilbefehl übereinstimmen.

Die Anzeige bei jeder Befehlseingabe, der Prompt, kann mehr oder weniger alle aktuellen Informationen anbieten, die Sie zur Orientierung erwarten. Die Prompt-Anzeige definieren Sie interaktiv zum Testen und dauerhaft in der Datei ".bashrc" mit "PS1='…'". Standardvariablen wie das aktuelle Verzeichnis, Datum oder Uhrzeit werden durch vordefinierte Escape-Zeichenfolgen angefordert, etwa "\w" für das aktuelle Verzeichnis - also:

PS1='/w'

Darüber hinaus können Sie aber auch jede beliebige Umgebungsvariable einfach mit "$[Variable]" in die PS1-Definition setzen

PS1='/w [$LOGNAME]'

Um Infos gegeneinander abzugrenzen, sind ferner Farbdefinitionen vorgesehen, die stets mit der Sequenz "\[\033" starten. Ein komplexer Prompt wie

PS1='\n\[[47;30m\]\d, \A \ [[41;37m\] on \H \ [[47;30m\] MB free=$freemem \[[41;37m\] $CPU \ [[40;37m\] [$timediff] \ [[42;30m\] \w \[[0m\]\n'

erscheint kryptisch. Wenn Sie den simplen Mechanismus verstanden haben, verliert er aber seinen Schrecken: Es geht Schritt für Schritt von einer Escape- Sequenz zur nächsten - "\n" bedeutet einen Zeilenumbruch, "\[\033" schaltet dann die Farben um, "\d" setzt danach das Datum ein, erläuternder Text oder Zeichen wie Komma oder Blank sind an jeder Stelle möglich, ferner auch Systemvariablen mit "$". Wichtig ist, Farbdefinitionen am Ende wieder explizit wieder zurückzusetzen ("\[\033[0m\]"), andernfalls sind Störungen mit den allgemeinen Terminal- Farbeinstellungen ("Bearbeiten fi Einstellungen fi Farben") zu erwarten.

Die Wirkung des obigen Prompt- Beispiels sehen Sie in der Abbildung auf dieser Seite: Sie können also neben Standardvariablen wie Datum, Uhrzeit, User, Host, Arbeitsverzeichnis im Prinzip jede beliebige Info im Bash- Prompt anfordern. Im Beispiel sehen Sie den freien Arbeitsspeicher, die CPUAuslastung und einen Sekunden-Timer.

Der Prompt_Command

Mehr als Geschmackssache: Ein funktionaler Prompt liefert automatisch Informationen, für die Sie sonst externe Systemwerkzeuge starten müssten.
Mehr als Geschmackssache: Ein funktionaler Prompt liefert automatisch Informationen, für die Sie sonst externe Systemwerkzeuge starten müssten.

Der Prompt erlaubt den Einbau jeder beliebigen Variablen. Wenn diese allerdings echtzeit-aktuell sein soll wie etwa bei der CPU-Auslastung, muss diese Variable unmittelbar vor der Prompt-Darstellung ermittelt werden. Genau dafür bietet das Linux-Terminal einen speziellen Service: Mit

PROMPT_COMMAND=[script | function]

definieren Sie ein Shell-Script oder eine Function der Datei ".bashrc", die bei jedem Enter in der Kommandozeile abgerufen wird. Da dies oft geschieht, sollte sich der Rechenaufwand dieses Prompt_Command in Grenzen halten. In unserem Beispiel-Prompt verweist der Prompt_Command auf eine kleine Function "promptcmd" in der Datei ".bashrc", welche die RAM-Auslastung, die CPU-Auslastung und die Zeit seit dem letzten Befehl ermittelt.

Der Prompt kann bei jeder Befehlseingabe beliebige nützliche und hübsche Infos liefern.
Der Prompt kann bei jeder Befehlseingabe beliebige nützliche und hübsche Infos liefern.