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:
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\[\033[47;30m\]\d, \A \ [\033[41;37m\] \u on \H \ [\033[47;30m\] MB free=$freemem \[\033[41;37m\] $CPU \ [\033[40;37m\] [$timediff] \ [\033[42;30m\] \w \[\033[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.
(PC-Welt/ad)