Terminal-Tuning: Linux-Tricks für mehr Komfort

Die Bash-Kommandozeile ist extrem anpassungsfähig. So lassen sich Aussehen, Infos, Bedienung und Funktionen perfekt maßschneidern. Wir zeigen, wie's geht.

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

Unentbehrliche Kommandos

Die Befehle cd, mkdir, rmdir zum Wechseln und Bearbeiten von Verzeichnissen gehören ebenso zum Terminalalltag wie ls, cp, cat, mv, rm zum Auflisten, Kopieren, Lesen, Umbenennen und Löschen von Dateien. Selbst diese einfachen Standardtools bieten zahlreiche Optionen, die eine Recherche mit man [Befehl] lohnen. Man muss sich die geeigneten Parameter nicht dauerhaft merken, wenn man sie als Alias in der „.bashrc“ ablegt – etwa

alias ls='ls -AlF'

Viele weitere Terminalkommandos sind unersetzlich oder mit grafischen Alternativen weitaus umständlicher.

lsblk: Den schnellsten und übersichtlichsten Weg, sich alle Datenträgerkennungen anzeigen zu lassen, bietet der Befehl lsblk – mit eindeutiger UUID-Kennziffer durch folgende Parameter:

lsblk -fl

Die richtige Datenträgerkennung ist fundamental und unabdingbar, um etwa eine dd-Kopie oder eine Partitionierung durchzuführen.

df in der Form

df -h

oder auch df -h | grep /dev/sd – um die physischen Laufwerke zu filtern – ist das einschlägige Hilfsmittel für eine schnelle Übersicht zur Festplattenbelegung.

find: Windows-Umsteiger werden schnell feststellen, dass der Befehl ls kein Äquivalent zu dir ist. Für große Dateiaktionen ist das Kommando find einschlägig:

find /home -name "*.png"

find kann allerdings deutlich mehr, als die Dateien nur aufzulisten. Folgendes Kommando löscht im angegebenen Ordner alle Dateien bis auf jene mit der Endung „.png“:

find ~/Bilder -type f ! -iname "*.png" -delete

Das vorangestellte Ausrufezeichen kehrt den nachfolgenden Suchbegriff um (hier „*.png“).

Für alles, was find nicht selbst erledigen kann, gibt es den Parameter „-exec“ mit nachfolgendem Bash-Befehl. Dann sucht find die passenden Dateien und gibt sie mit „-exec“ weiter an das gewünschte Kommando.

xprop zeigt zahlreiche Eigenschaften grafischer Programme an. Das einfachste und häufigste Motiv, xprop zu verwenden, ist die Frage nach dem Programmnamen eines Fensters. Also etwa die Frage: Wie lautet der Name des Dateimanagers, den ich gerade benutze? Nach diesem Befehl

xprop | grep CLASS

verwandelt sich der Mauszeiger in ein Kreuz, mit dem Sie auf das gewünschte Fenster klicken. Im Terminal erscheint dann der zughörige Programmname.

pkill: Vor allem Prozesse, die in mehreren Instanzen laufen, wie etwa Browser, sind mit grafischen Hilfsmitteln wie der Systemüberwachung schlecht zu zähmen. Um alles zu beenden, was etwa zu Chrome oder Chromium gehört, hilft pkill:

pkill chrom

Die Eigenschaft von pkill, auch Teilstrings von Programmnamen zu akzeptieren, macht die Sache einfach, allerdings auch riskanter. Achten Sie darauf, dass der String eindeutig bleibt.

dd: Das Werkzeug dd (Diskdump) erledigt bitgenaue Kopien von einem Gerät auf das andere. Unentbehrlich ist es unter anderem für das Schreiben bootfähiger ISO-Images:

sudo dd if=[name].iso of=/dev/sd[x]

„if=“ steht für „Input File“, „of=“ für „Output File“, wobei aber typischerweise als „of=“ die Laufwerksangabe etwa einer DVD oder eines USB-Sticks anzugeben ist.

rsync ist ein Sicherungstool mit zahlreichen Spezialoptionen, aber oft genügt der Sammelschalter „-a“:

rsync -a /Quellpfad /Zielpfad

Dies berücksichtigt alle Unterverzeichnisse des Quellpfads. Für periodische Sicherungen nützlich ist Schalter „u“, also insgesamt rsync -au […]. Der Updateschalter spart viel Zeit, indem er bereits bestehende Dateien überspringt.

lshw zeigt nach

sudo lshw –short

unter anderem für die Klasse „memory“ die belegten und die nicht belegten RAM-Slots sowie die Kapazität der einzelnen Speichermodule. Weitere spezialisierte Tools lspci und lsusb liefern sämtliche PCI-und USB-Geräte, wobei Sie die Gesprächigkeit der Ausgabe durch die Parameter „-v“ und „-vv“ erhöhen können.

dmidecode kann weitgehend die komplette übrige Hardware analysieren, wobei Sie die gesuchte Komponente mit dem Schalter „-t“ angeben:

sudo dmidecode -t bios

Mögliche Parameter nach „-t“ sind „bios“, „system“, „baseboard“, „chassis“, „processor“, „memory“, „cache“, „connector“ und „slot“.

ifconfig informiert nicht nur über Netzwerkschnittstellen, sondern veranlasst auch Eingriffe. Bei purer Eingabe ifconfig erhalten Sie unter anderem die physikalische MAC-Adresse, die lokale IP-Adresse (ipv4 und ipv6) und Anzahl und Datenmenge der empfangenen (RX) und der gesendeten (TX) Datenpakete seit dem letzten Systemstart. Der Ethernet-Adapter erscheint als „eth0“, der WLAN-Adapter als „wlan0“. Die angezeigte „lo“-Schnittstelle mit der IP-Adresse 127.0.0.1 existiert nicht physisch, weshalb ifconfig hier auch keine Hardwareadresse anzeigt. Mit „down“ und „up“ wie

sudo ifconfig eth0 down

schalten Sie einen Adapter aus oder wieder ein, in diesem Fall mit „eth0“ den Ethernet-Anschluss.