In diesen Tipps geht es dreimal um Kernfunktionen der Bash-Shell, ebenso oft um Komfortfunktionen grafischer Terminalemulatoren wie Gnome-Terminal, in denen die Shell läuft. Den Beginn macht der opulente Terminalmonitor Btop.
Btop als Systemmonitor
Als Terminal-Taskmanager ist das übersichtliche Htop kaum zu schlagen. Das Tool Btop kann Htop aber sinnvoll ergänzen, weil es zusätzlich CPU-Temperatur, Belegung und Auslastung der Datenträger sowie die Netzauslastung anzeigt.
Btop sollte überall mit
sudo apt install btop
aus den Standardquellen zu beziehen sein. Btop hat eine beeindruckende Informationsdichte und sieht obendrein gut aus. Die Kehrseite sind zahlreiche Filter und Ansichtsmodi, die man über winzige (kolorierte) Tasten-Hotkeys wechselt. Dass man sich hier verirrt, ist erst mal eher die Regel als die Ausnahme. Man kann sich den Umgang mit Btop aber vereinfachen, indem man zunächst mit Esc-Taste (oder „m“ für „menu“) in den „Options“ einen gut lesbaren Farbkontrast einstellt („general“ und „Color theme“), mit Esc-Taste zurückkehrt und dann mit Taste „P“ zum „preset 2“ wechselt. Das bietet nämlich die Infos, die Htop fehlen. Da sich Btop nach Beenden (Taste „Q“) die letzten Einstellungen merkt („~/.config/btop“), startet es automatisch mit dieser Ansicht, solange der Nutzer nichts ändert.
Operatoren: Befehle verknüpfen
Die Bash-Shell kennt einige Operatoren, um mehrere Befehle nacheinander zu verknüpfen. Das ist zum Teil auch bei der interaktiven Arbeit am Prompt relevant, aber wichtiger noch für einzeilige Alias-Definitionen in der Datei „~/.bashrc“. Und auch in Scripts können solche Verkettungsoperatoren den Code für Fallunterscheidungen und Befehlsketten deutlich verkürzen.
Operator „;“: Die einfachste Verknüpfung mit dem Strichpunkt ermöglicht eine schlichte Befehlskette ohne logische Bedingung. Die Verknüpfung
uptime;lsb_release -a;echo " ";free -m;
echo " ";df -h
führt einfach alle Befehle nacheinander aus. Ob dabei ein Befehl erfolgreich ist oder nicht, spielt für das Nachfolgende keine Rolle.
Operator „&“: Dieser Verknüpfungsoperator schickt den Befehl vor dem „&“ in den Hintergrund und führt sofort den zweiten Befehl aus. Bei der interaktiven Arbeit am Prompt gibt es typischerweise gar keinen zweiten Befehl:
sudo find / > /liste.txt &
Der Operator hat hier nur die Aufgabe, die Find-Aktion in den Hintergrund zu verbannen, um die Shell freizuhalten. Diese kann ungestört weitergenutzt werden.
Operator „&&“: Verknüpfungen mit dem Operator „&&“ erwarten, dass der erste Befehl erfolgreich war. Der zweite Befehl wird nur in diesem Fall ausgeführt. Typisch ist daher etwa dieses Beispiel:
sudo apt update && sudo apt dist-upgrade
Hier wird die Aktualisierung auf einem Debian-System („dist-upgrade“) nur dann gestartet, wenn zuvor die Aktualisierung der Paketdatenbank erfolgreich durchlief („update“). Ein zweites Beispiel
ping -c 1 192.168.178.5 && scp lw@192.168.178.5:/lw/.bashrc $HOME/.bashrc
fragt erst nach, ob ein Netzrechner online ist, um dann von dort eine Datei zu beziehen. Wenn Ping scheitert, fällt die Kopieraktion aus.
Operator „||“: Dieser Operator ist das Gegenstück zu „&&“: Hier wird der zweite Befehl nur dann ausführt, wenn der erste fehlschlug. Das kann etwa eine Scriptabfrage, ob eine bestimmte Datei schon existiert, maximal verkürzen:
ls liste.txt || find $PWD > liste.txt
Die Find-Liste wird nur erstellt, wenn ls vorher scheitert.
Lesbarkeit im Terminal
Grafische Terminalemulatoren wie das Gnome-Terminal oder die KDE-Konsole unterstützen praktisch jeden Wunsch optischer und ästhetischer Anpassung. Farbthemen und Transparenz gibt es überall, zum Teil sogar Hintergrundbilder für das Terminal (Mate-Terminal, Tilix, Terminator). Wichtiger sind aber die Optionen für Schrift und Textgröße.
Die wichtigste Einstellung („Bearbeiten –› Einstellungen–› Profile“) unter „Text“ ist eine „Benutzerdefinierte Schrift“, die gefällt und deren Punktgröße dem Sehvermögen optimal angepasst ist. Unterhalb der Schrifteinstellung gibt es im Gnome-Terminal den Punkt „Zellenabstand“. Das erste Maß für die „Breite“ sollten Sie auf „1,00“ belassen, weil horizontales Dehnen der Buchstaben das Schriftbild verzerrt. Es lohnt sich aber, die „Höhe“ zu optimieren: Dies vergrößert den Zeilenabstand und macht Dateilisten, Midnight Commander und Terminaleditoren luftiger und besser lesbar. Auf größeren Monitoren ist ein Wert von etwa „1,20“ einen Versuch wert.
Diese Darstellungsoption bietet zwar nicht jedes grafische Terminal, sie ist aber auch nicht exklusiv: Neben dem Gnome-Terminal haben auch der Emulator Tilix und die KDE-Konsole (unter „Erscheinungsbild –› Verschiedenes –› Zeilenabstand“) eine entsprechende Einstellung.

Kopieren von Spalten und Ausschnitten
Wie im Tipp unten angesprochen, können grafische Terminals der Desktops Gnome, KDE, Cinnamon, XFCE oder LXQT mit Mausmarkierung und linker Maustaste über den Menüpunkt „Kopieren“ Textinhalt in die Zwischenablage kopieren. Das funktioniert auch mit Spalten.
Diese Option ist nützlich, wenn Sie zum Beispiel nach
ls -lA
nur die Dateinamen kopieren wollen. Dazu drücken Sie gleichzeitig die Strg-Taste und die Alt-Taste (je nach System genügt auch die Alt-Taste) und ziehen dann mit der Maustaste die gewünschte Markierung. Diese erlaubt jetzt ein Rechteck beliebiger Größe, in unserem Beispiel die letzte Spalte mit den Dateinamen. Nach Rechtsklick bietet das Terminal die Option „Kopieren“ und danach lässt sich der gewählte Text in jeden Editor einfügen.

Kopieren mit Mausrad-Klick
Wenn das Terminal in Problemsituationen Kommandovorschläge anbietet oder eine ermittelte 32-stellige Datenträger-UUID an anderer Stelle einzufügen ist, muss man das nicht manuell abtippen. Grafische Terminalemulatoren bieten Kopiermethoden per Kontextmenü, Hotkeys, zum Teil sogar per Drag & Drop.
Gnome-Terminal, KDE-Konsole & Co. können markierten Text nach Rechtsklick in die Zwischenablage „Kopieren“. „Einfügen“ ist dann in beliebiger Anwendung und auch im Terminal am Prompt und an der aktuellen Cursorposition nach Rechtsklick und „Einfügen“ möglich. Desgleichen funktionieren auch Hotkeys, allerdings nicht die systemweit gebräuchlichen Kombinationen Strg-C und Strg-V (Strg-C ist aus historischen Gründen als Abbruch-Hotkey definiert). Man muss nur die Umschalt-Taste hinzunehmen: Strg-Umschalt-C und Strg-Umschalt -V kopieren markierten Text und fügen ihn wieder ein.
Die Konsole von KDE beherrscht wie eine Textverarbeitung sogar Drag & Drop von markierten Texten, wenn Sie dabei die Strg-Taste drücken. Das funktioniert auch im Austausch zwischen zwei Konsolenfenstern. Ein praktisches Beispiel wäre etwa die in einem Fenster mit lsblk ermittelte UUID eines Datenträgers, der mit Strg-Taste und Mausaktion in die „/etc/fstab“ des zweiten Fensters kopiert wird.
Für das Transportieren kleiner Textteile innerhalb des Terminals – also von einer Befehlsausgabe auf den Eingabeprompt – ist aber der mittlere Mausklick (Mausrad) die eindeutig schnellste Methode: Der Mausradklick fügt den aktuell markierten Text sofort an der aktuellen Cursorstelle ein. Diese Methode nutzt nicht die globale Zwischenablage und funktioniert daher nicht zum Kopieren in andere Programme.
Apropos: Programmsuche mit Stichwort
Eine Hürde bei der Terminalarbeit ist oft die grundsätzliche Frage, welches Kommando sich für eine bestimmte Aufgabe eignet. Für eine grobe thematische Suche eignet sich Apropos, das den Datenbestand der Manpages nach Stichwörtern durchsucht.
Da die Manpages englischsprachig sind, benötigt Apropos entsprechende Stichwörter oder Fachtermini. Zumindest einen ersten Überblick zu einem Thema erhalten Sie nach einer Abfrage wie etwa dieser:
apropos ssh
Hier erscheinen dann alle Befehle, die im Zusammenhang mit SSH-Fernwartung stehen. Falls Apropos zu viele Ergebnisse liefert, können Sie mit dem Schalter „–and“
apropos --and ftp client
eine Und-Suche nach mehreren Stichwörtern starten, um die Ergebnismenge übersichtlich zu halten.

„Shell Options“ mit shopt
Das Bash-interne Programm shopt für „Shell Options“ steuert unscheinbare, zum Teil aber nützliche Verhaltensweisen der Bash-Shell. Der Befehl „shopt“ ohne Schalter zeigt alle Optionen und ihren aktuellen Status als „on“ oder „off“. Von den zahlreichen Einstellungen (57) sind aber nur wenige alltagsrelevant.
Mit den Schaltern „-s“ (set) und „-u“ (unset) lässt sich eine Option einschalten beziehungsweise ausschalten. Folgende Shell-Optionen sind nützlich oder sogar notwendig:
dotglob: Platzhalter wie „*“ und „?“ werden von der Bash-Shell interpretiert und nicht vom ausgeführten Befehl. Per Standard filtert die Bash dabei alle Dateiobjekte weg, die mit führendem Punkt als versteckt ausgezeichnet sind. Das kann irritieren und bei Sicherungen etwa mit tar zu fehlenden Daten führen. Um es an einem möglichst einfachen Beispiel zu demonstrieren – der Befehl
echo *
im Home-Verzeichnis wird alle versteckten Objekte unterschlagen. Nach der Anweisung
shopt -s dotglob
liefert derselbe Echo-Befehl sämtliche Dateien und Ordner.
autocd: Die Anweisung
shopt -s autocd
sorgt dafür, dass eine (korrekte) Pfadangabe für den Verzeichniswechsel genügt und das vorangestellte „cd“ unnötig wird – besonders nützlich bei auf den Prompt kopierten Pfadangaben.
histappend: Mit dieser Option werden alle Befehl über Sitzungen und Neustarts hinaus in der Datei „.bash-history“ gesammelt. Die Anweisung:
shopt -s histappend
ist daher unentbehrlich, aber in der Regel Standard.
dirspell und cdspell: Das sind kleine Hilfen, die leichte Tippfehler bei Pfadangaben automatisch ausbessern. Diese Autokorrektur ist standardmäßig abgeschaltet, erst diese beiden Kommandos aktivieren sie:
shopt -s dirspell
shopt -s cdspell
Danach wird die Shell den Eingabefehler
cd /ecc/samba/
automatisch korrigieren.
interactive_comments: Die Option ist meist standardmäßig aktiv. Sie erlaubt bei der Befehlseingabe angehängte Kommentare mit „#“ – etwa:
tree -isf | sort -n -k2 # Dateien nach Größe sortieren
Sinnvoll ist dies deshalb, weil der Kommentar in der Bash-History landet. Damit sind komplexere Befehle leicht wieder zu finden.
Alle shopt-Anweisungen können jederzeit interaktiv eingegeben werden, gelten dann aber nur temporär. Für dauerhaften Einsatz müssen sie – an beliebiger Stelle – in die Konfigurationsdatei „~/.bashrc“ eingetragen werden.

Exec-Befehl als Datensammler
Wer die Ausgabe mehrerer Terminalbefehle in eine Datei schreiben will, benötigt dafür ebenso viele Kommandos mit den Umleitungszeichen „> [Datei]“ (für den ersten Befehl) und „>> [Datei]“ für alle folgenden. Mit dem internen Befehl exec der Bash-Shell lässt sich das vereinfachen.
Wenn das Kommando exec in dieser Form
exec > ausgabe.txt
gestartet wird, dann landet die Ausgabe aller nachfolgenden Befehle in der angegebenen Datei. Die normale Standardausgabe im Terminal entfällt. Die angegebene Ausgabedatei bleibt in jedem Fall eindeutig, auch wenn Sie während der Exec-Session mit „cd“ Verzeichnisse wechseln. Die Exec-Subshell zeichnet so lange alle Befehlsausgaben in die Ausgabedatei auf, bis Sie den Vorgang mit „exit“ beenden.

