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
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
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.