Terminal- und Bash-Optimierung

Grafische Terminals und die darin laufende Kommando-Shell bieten reichhaltige Optionen, um sie optisch und funktional zu optimieren und zu individualisieren. Das ist zum Teil einfach, zum Teil knifflig. Die notwendigen Tipps finden Sie hier.

Dieser Artikel zeigt alle wichtigen Optionen, um das grafische Terminal, aber auch die virtuellen Konsolen und die SSH-Konsole so komfortabel wie möglich einzurichten. Nur Punkt 1 bezieht sich ausschließlich auf den Desktop und das grafische Terminalfenster. Alle anderen Punkte 2 bis 6 zur Bash-Optimierung gelten auch für SSH und für die Konsolen (Strg-Alt-F1 und weitere). Bei den grafischen Terminal-Emulatoren nehmen wir das Gnome-Terminal als Referenz, wie es in Ubuntu-Varianten und Linux Mint zum Einsatz kommt. Andere Terminal-Emulatoren wie etwa die „konsole“ unter KDE bieten ganz ähnliche Einstellungen, aber nicht immer an gleicher Stelle. Bei der Shell selbst, also dem eigentlichen Kommandointerpreter, gehen wir von der Bash-Shell aus, die praktisch überall Standard ist.

1. Das grafische Terminal

Terminals in Gestalt des Gnome-Terminal, Mate-Terminal, Xfxe4-Terminal oder Konsole (KDE) sind grafische Programme mit zahlreichen Einstellungen. Sie sind unabhängig von der Shell, die im Terminal läuft. Die Optionen und Optimierungen, die Sie dort vornehmen, haben daher mit der Bash-Shell zunächst nichts zu tun. Lediglich bei Farbeinstellungen für das grafische Terminal und solchen für die Bash-Shell gibt es Kombinationen, welche die Lesbarkeit und Übersicht fördern – oder eben nicht. Insbesondere engagierte Nutzer, die sich das Terminal optisch bestmöglich einrichten möchten, sollten sich beim Aussehen des grafischen Terminals farblich festlegen, bevor sie Ausgabefarben und Prompt der Bash-Shell optimieren.

Einstellungen und Profile: Das Gnome-Terminal zeigt im Menü „Bearbeiten“ die zwei Untermenüs „Einstellungen“ und „Profileinstellungen“. Beides sind benutzerspezifische Optionen: Was unter „Einstellungen“ festgelegt wird, gilt für jedes Terminal im aktuellen Konto. Die „Profileinstellungen“ erlauben darüber hinaus verschiedene Layouts, die man entweder im Gnome-Terminal selbst mit „Terminal -> Profil wechseln“ umschalten oder auch über Programmstarter schon beim Aufruf anwählen kann:

gnome-terminal --profile big_black

Ob Sie tatsächlich verschiedene Profile brauchen, ist Ihre Entscheidung. Das als „Unbenannt“ oder als „Vorgabe“ betitelte Standardprofil sollten Sie aber unter „Bearbeiten -> Profileinstellungen“ in jedem Fall bearbeiten. Die Registerkarte „Allgemein“ bestimmt die Größe des Terminalfensters über die Spaltenzahl (Breite) und Zeilenzahl (Länge) sowie die verwendete Schriftart. Beachten Sie, dass Sie das Terminal-Fenster unabhängig von der Schrift mit Strg-+ und Strg– skalieren können, in einigen Terminals auch mit Strg und mittlerer Maustaste. Die Registerkarte „Farben“ definiert die Farb- und Transparenzeinstellungen (in einigen Terminals auch als Extra-Registerkarte „Hintergrundtyp“). Wer Experimente mit eventuell kontrastarmen Ergebnissen vermeiden will, kann das Systemschema oder vorgegebene Schemata verwenden.

Unter „Bildlauf“ sollte der „Zeilenpuffer“ deutlich vierstellig eingestellt sein, damit Sie auch bei umfangreichen Dateilisten (find, ls, rsync) bis zum Beginn zurückblättern können.

Der allgemeinere Punkt „Bearbeiten -> Einstellungen“ spielt für die Terminal-Optik keine Rolle. Hier können Sie aber unter „Tastenkürzel“ die Hotkeys ermitteln oder neu bestimmen, die in Ihren Terminals gelten. Der Tipp, hier auch die Hotkeys für Kopieren (Strg-Shift-C) und Einfügen (Strg-Shift-V) auf gebräuchliches Strg-C und Strg-V umzustellen, ist zweischneidig, weil Strg-C in der Bash-Shell traditionell für den Abbruch des aktuellen Befehls reserviert ist.

Startparameter: Größe und Position des Terminals können Sie auch per Startparameter festlegen. Global und mit zusätzlicher Angabe der Fensterposition arbeitet der Parameter „–geometry“ (fast überall Standard: Gnome, KDE, XFCE, Mate):

gnome-terminal --geometry=120x24+1+1

Dies würde ein Terminal mit 120 Zeichen Breite und 24 Zeilen Länge in der linken oberen Ecke starten (1 Pixel von links, 1 Pixel von oben). Diesen Aufruf definieren Sie am besten in der globalen Verknüpfung „/usr/share/applications/gnome-terminal.deskop“ in der Zeile „Exec=“ mit root-Recht.

Neben dem schon genannten „–profile“-Schalter gibt es weitere Optionen via Startparameter, welche die grafischen Profileinstellungen nicht vorsehen:

gnome-terminal --zoom=1.4 --working-directory=/media/ha

Dies erhöht den Zoomfaktor um 40 Prozent und startet gleich im gewünschten Verzeichnis. Letzteres ist natürlich auch über die Bash-Shell leicht zu erzielen.

Terminal-Profile: Wer im Terminal verschiedene Profile anlegt, kann mit drei Mausklicks zu einer komplett anderen Darstellung wechseln.

2. Bash-Zeileneditor und History

Kaum ein Terminalthema klingt langweiliger als die Regeln des „line editing“ – also Texteingabe, Textbearbeitung, Autocompletion und Befehlssuche am Bash-Prompt. Es entscheidet aber fundamental darüber, wie viel oder wenig Sie tippen müssen – und „Tippen“ bedeutet hier ja meistens nicht das Schreiben von natürlicher Sprache, sondern von oft komplexen Befehlen oder gar von Escape- und Regex-Sequenzen.

Autocompletion: Lange Dateinamen müssen nicht getippt werden: Wenn Sie die ersten zwei, drei Buchstaben eingeben und dann die Tab-Taste drücken, ergänzt das Terminal den vollständigen Namen automatisch, desgleichen Ordnerpfade, sofern die eingegebenen Buchstaben stimmen (Groß- und Kleinschreibung beachten!).

History: Das Terminal vergisst nichts – jedenfalls nicht so schnell. Die Befehle werden im Speicher und dauerhaft in der ~/.bash_history gespeichert. Damit die Befehle über Sitzungen und Neustarts hinaus gesammelt werden, sorgt diese Anweisung:

shopt -s histappend

Diese werden Sie in jeder Standardstartdatei ~/.bashrc antreffen. Bei welcher Zeilenmenge Schluss sein soll, also die ältesten Einträge gelöscht werden, bestimmen folgende Variablen:

HISTSIZE=5000
HISTFILESIZE=5000

Auch diese stehen in jeder ~/.bashrc, wenn auch eventuell mit geringeren Zeilenangaben. „HISTSIZE“ ist die maximale Zeilenmenge im Speicher, „HISTFILESIZE“ die maximale Zeilenmenge in der Datei ~/.bash_history. Je höher die Zahlen, desto umfangreicher wird das Gedächtnis der Bash-Shell. Mit der Variablen

HISTCONTROL=ignoredups

können Sie verhindern, dass die History von Dubletten wimmelt: Bereits vorhandene, identische Kommandos werden dann nicht aufgenommen. Eine weitere Option, die History effizienter zu machen, ist der Ausschluss von Allerweltsbefehlen:

HISTIGNORE="ls:cd*:free"

Soviel zur Optimierung der History. Für die eigentliche, praktische Verwendung gibt es mehrere Möglichkeiten. Fast jedem Anwender bekannt ist das Zurückblättern zu den letzten Kommandos mit der Taste Cursor-oben, die den gewünschten Befehl wieder auf den Prompt holt. Eine systematische Suche bietet der Hotkey Strg-R: Nach Eintippen etwa von „tar“ erscheint der letztgenutzte tar-Befehl in kompletter Länge. Ist dieser passend, kann er mit Eingabetaste sofort ausgeführt oder mit Alt-Eingabetaste (eventuell auch Strg-Eingabetaste) zum Editieren auf den Prompt geholt werden. Ist der angezeigte History-Treffer nicht der passende, geht es mit Strg-R zum vorletzten und so fort.

Eine einfache Alternative oder auch Ergänzung zur Rückwärtssuche mit Strg-R ist eine Filtersuche mit der Taste Bild-oben. Nach Eingabe etwa von „tar“ befördert diese Taste den letzten, kompletten tar-Befehl direkt auf den Prompt, ein weiteres Bild-oben den vorletzten und so fort. Diese Suche funktioniert aber nur, wenn Sie Taste entsprechend belegen – und zwar in der Datei /etc/inputrc. Das Editieren erfordert root-Recht. Sie werden dort die beiden Zeilen

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

antreffen und müssen dort nur das führende Kommentarzeichen „#“ entfernen.

Zum Editieren vorhandener Zeilen, seien es selbst getippte oder aus der History gefischte, helfen Lösch- und Rücktaste, Pos1, Ende, Strg-Cursor-rechts/links (wortweise springen), Strg-K und Strg-U (Löschen nach und vor der Cursorposition, siehe dazu auch Punkt 4).

History-Filter: Mit dieser Einstellung in der Datei /etc/inputrc filtert die Bash nach Bild-oben/Bild-unten die Einträge, die mit dem bereits eingegebenen Teilbefehl übereinstimmen.
Hübsche Prompts sind hartes Handwerk. Ein funktionaler Prompt liefert aber automatisch Informationen, für die Sie sonst externe Systemwerkzeuge starten müssten.

3. Farben am Prompt und in Dateilisten

Der Prompt, also die Anzeige bei jeder Befehlseingabe, kann beliebige statische und dynamische Informationen anbieten, die Sie zur Orientierung erwarten. Die Prompt-Anzeige definieren Sie interaktiv zum Testen mit dem Befehl „PS1=‘…‘“. und dauerhaft in der Datei ~/.bashrc. Einige dynamische Variablen wie das aktuelle Verzeichnis, Datum oder Uhrzeit bietet der Prompt durch vordefinierte Escape-Zeichenfolgen selbst an, etwa „\w“ für das aktuelle Verzeichnis, „\u“ für das angemeldete Konto oder „\h“ für den Rechnernamen. Einfache Prompts sehen dann so aus:

PS1="\w => "
PS1="\u@\h:\w => "

Eine gute Infoquelle für alle Prompt-Optionen ist die Seite https://wiki.archlinux.de/title/Bash-Prompt_anpassen. Über die eingebauten Codes hinaus können Sie jede allgemeine oder selbst definierte Variable einfach mit „$Variable“ in die PS1-Definition setzen:

PS1="\w [$LOGNAME] => "

Mehr noch: Der Prompt kann sogar beliebige Befehle aufnehmen. Wir demonstrieren das mit einem Beispiel, das freilich als Prompt dauerhaft nicht praktikabel ist:

PS1="\nSPEICHERAUSLASTUNG: \n\$(free -m)\[\033[0m\]\n\n => "

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"

ist praktisch unlesbar. Immerhin geht es Schritt für Schritt von einer Escape-Sequenz zur nächsten – „\n“ bedeutet einen Zeilenumbruch, „\[\033“ schaltet dann die Farben um, „\d“ setzt das Datum ein, „\A“ die Uhrzeit. Erläuternder Text oder Zeichen wie Komma oder Blank sind an jeder Stelle möglich, ferner auch Variablen mit „$“.Wichtig ist, Farbdefinitionen am Ende wieder zurückzusetzen

(*\[\033[0m\]“).

Die unsäglichen Farbsequenzen einerseits, die Variablen-Tauglichkeit des Prompts andererseits veranlassen Bash-Freaks, alle nötigen Codes in Variablen abzulegen (in der ~/.bashrc)

GREEN="\[\033[01;32m\]"

und dann als handlichere Variablen ($GREEN) in den Prompt einzubauen. Auch dies ist aber ein mühsamer Notbehelf, dem wir folgende Online-Hilfe vorziehen:

Easy Bash PS1 Generator: Ein nützlicher Helfer für farbenfrohe Prompts ist die Seite http://ezprompt.net/. Hier gehen Sie von ersten Position zur letzten durch, was der Prompt zeigen soll, und bestimmen für das jeweils markierte Element Vorder- und Hintergrundfarbe („FG“ und „BG“). Die einzelnen Elemente lassen sich auch nachträglich umsortieren. Im untersten Feld erscheint der zugehörige Code für die PS1-Variable, den Sie einfach kopieren, im Terminal einfügen und mit Eingabetaste testen. Wenn das Ergebnis passt, übernehmen Sie die Codezeile in Ihre Datei ~/.bashrc. Die Webseite deckt längst nicht alle Möglichkeiten des Bash-Prompts ab, liefert aber zuverlässig die heiklen Farbcodes.

Dynamische Infos durch Prompt_Command: Wenn Variablen Echtzeit-aktuell im Prompt landen sollen (etwa die CPU-Auslastung), dann muss diese Variable unmittelbar vor der Prompt-Darstellung ermittelt werden. Dafür bietet die Bash-Shell einen speziellen Service: Mit

PROMPT_COMMAND=[function-name]

definieren Sie eine Function der Datei .bashrc, die bei jedem Befehl in der Kommandozeile abgerufen wird. Da dies sehr oft geschieht, sollten Sie den Rechenaufwand in Grenzen halten. Ein Beispiel für einen selbstgebauten Prompt mit Echtzeitinfos aus einem Prompt_Command sehen Sie in der Abbildung auf dieser Seite.

Farbige Dateien und Ordner: Das Terminal stellt Dateitypen und Ordner standardmäßig in unterschiedlichen Farben dar. Wenn Sie bestimmte Farben ändern möchten, erstellen Sie mit folgendem Befehl eine persönliche Konfigurationsdatei im Home-Verzeichnis:

dircolors -p > ~/.dircolors

Die versteckte Datei .dircolors können Sie dann mit einem beliebigen Editor bearbeiten. So werden zum Beispiel Ordnernamen gelb gefärbt:

DIR 01;33

Die Einstellungen dieser eigenen Farbtabelle dominieren über die Standardeinstellungen. Die Farbcodes können Sie der bereits genannten Seite https://wiki.archlinux.de/title/Bash-Prompt_anpassen entnehmen. Achten Sie auf die Tatsache, dass solche Farbdefinitionen durch Umstellen der allgemeinen Terminalfarben (siehe Punkt 1) unter Umständen unlesbar bis unbrauchbar werden. Wer hier Zeit investiert, sollte an der allgemeinen Terminaloptik nichts mehr verändern.

Diese Seite erspart das Recherchieren der Farbcodes: Auf http://ezprompt.net/ stellen Sie sich die Basis des Bash-Prompts per Mausklicks zusammen.

4. Bash-Aliases und Bash-Hotkeys

Ohne in das Bash-Scripting einzusteigen, das dieser Beitrag weitestgehend ausklammert, können einfachste Alias-Kurzbefehle und (weniger einfache) Bind-Hotkeys die Effektivität der Bash-Shell enorm steigern.

Bash-Hotkeys: Mit Tastendefinitionen sollte man sparsam umgehen, damit der Durchblick nicht verlorengeht, jedoch sind einige Nachbesserungen sinnvoll und produktiv. So ist etwa beim Editieren am Prompt zwar das Löschen vor und nach der Cursorposition mit den Hotkeys Strg-U und Strg-K vorgesehen, aber nicht das Löschen der kompletten Zeile mit einem Hotkey. Folgende Bind-Kommandos

bind '“\C-l“:kill-whole-line'
bind '“\el“:kill-whole-line'

legen den internen Befehl „kill-whole-line“ auf die Hotkeys Strg-L und Alt-L. Die Strg-Taste ist mit „\C“ einzugeben, Alt mit „\e“. Dass bei Strg die Folgetaste mit Bindestrich abzugrenzen ist, bei der Alt-Taste hingegen nicht, ist kompliziert, aber nicht zu ändern.

Folgender Befehl

bind '"\e[15~":"xdg-open . \n"'

belegt die Funktionstaste F5 so, dass sie den Standarddateimanager mit dem aktuellen Verzeichnis auslöst. Die Funktionstasten sind mit „\e[nn~“ anzugeben, wobei die Ziffer „nn“ in der Regel den Wert plus 10 der tatsächlichen Taste benötigt. Im Zweifel kann der Befehl „read“ und anschließendes Drücken der Funktionstaste über die Ziffer „nn“ informieren.

Bind-Befehle können Sie interaktiv ausprobieren; sie gelten dann bis zum Schließen des Terminals. Für permanente Gültigkeit benötigen sie einen Eintrag in die Datei ~/.bashrc.

Aliases: Kurzbefehle können die schnelle Ordnernavigation vereinfachen oder komplexe Befehle abkürzen. Der Platz für Aliases ist wieder die Datei ~/.bashrc, und die Befehle werden in einfachsten Fällen so aussehen:

alias ini='$EDITOR ~/bashrc'
alias mc='mc /srv/dev-disk-by-label-Data /srv'
alias ll='ls -alF --group-directories-first'

Aliases entschärfen die interaktive Nutzung mächtiger Terminaltools erheblich. Ein Beispiel ist etwa folgendes Alias für den Find-Befehl:

alias fn='read -p "Dateimaske (z.B. *.pdf): " TMP; find . -type f -name "$TMP"'

Nach Aufruf des Kürzels fn werden Sie mittels „read“ nach der Dateimaske gefragt, die dann etwa „*.odt“ oder auch „2018*.jpg“ lauten kann (ohne Anführungszeichen). Diese Eingabe wird mit der Variable $TMP an find weitergereicht. Das Alias geht davon aus, dass man zuerst in das gewünschte Verzeichnis gewechselt hat, denn dort startet find seine Suche (Punkt nach „find .“).

Ähnlich übergibt hier

alias ft='read -p "Alter in Tagen (z.B. 7): " TMP; find . -type f -mtime "-$TMP"'

die Variable $TMP eine Zahl an find, das dann über den Schalter „-mtime“ alle Dateien ermittelt, die in den letzten Tagen erstellt wurden.

Hotkeys für die Bash-Shell: Mit bind können Sie Tasten und Tastenkombinationen neu definieren und Programme auslösen. „bind -P“ informiert über aktuelle Belegungen.
Weniger tippen und nicht über die Syntax nachdenken: Aliases machen komplexe Bash-Kommandos – wie hier find – deutlich komfortabler.

5. Ordnernavigation im Terminal

Verzeichniswechsel mit cd gehören zu den meistgenutzten Kommandos. Auch hier gibt es eine Reihe kleiner Optimierungen.
Die häufigsten Zielordner sind am besten über ein knappes Alias zu erreichen – etwa um nach

alias d = 'cd ~/Schreibtisch'

mit der Eingabe „d“ zum Desktop zu gelangen.
Eine effiziente Lösung für schnelles Springen in wichtige Verzeichnisse ist die Variable CDPATH. In ihr lassen sich mehrere Ordnerpfade speichern. Danach kann man überall mit „cd [Verzeichnis]“ in ein Unterverzeichnis eines der gespeicherten Verzeichnisse springen. Um also etwa den Pfad „/var/www/html“ in die Variable CDPATH aufzunehmen, geben Sie

export CDPATH='.:/var/www/html/'

ein. Danach wechseln Sie von beliebiger Stelle mit „cd htdocs“ und „cd logs“ in Unterordner von „/var/www/html/“. Die CDPATH-Variable lässt sich durch eine beliebige Anzahl weiterer Verzeichnisse erweitern – jeweils durch Doppelpunkt getrennt:

export CDPATH='.:~:/var/www/html/:/media/985c9fb3-14a6-449e-bec5-4666a283fbf4/'

Hier besteht der „CDPATH“ aus dem aktuellen Verzeichnis („.“), dem Home-Verzeichnis („~“), dem Webserver-Verzeichnis und einem Mountordner. Am Anfang sollte mit „.:“ immer das aktuelle Verzeichnis stehen, damit dieses die höchste Priorität behält. Für einen dauerhaften „CDPATH“ müssen Sie die Export-Anweisung in die Datei .bashrc eintragen.

Die meisten Nutzer verwenden cd für den Verzeichniswechsel, obwohl die Alternativen pushd und popd mehr Komfort bieten, vor allem dann, wenn es häufig von einem Ordner zum anderen und wieder zurückgehen soll. Daher sorgen folgende simplen Alias-Definitionen:

alias +='pushd'
alias _='popd'

dafür, dass sich die Bash-Shell nach „+“ das letzte Verzeichnis merkt. Mit „_“ kehren Sie danach umstandslos zurück zum letzten Verzeichnis. Das normale Minuszeichen („-„) ist als Alias-Kürzel nicht möglich.

Die Bash besitzt eine optionale Autokorrektur, um Vertipper bei Verzeichnisnamen auszubessern. Diese Autokorrektur ist standardmäßig abgeschaltet, erst diese drei Befehle schalten sie ein:

shopt -s direxpand
shopt -s dirspell
shopt -s cdspell

Danach wird die Shell den Eingabefehler

cd /ect/samba/

nach /etc/samba/ korrigieren und korrekt landen. Soll die Autokorrektur permanent aktiv sein, dann müssen die Befehle in die ~/.bashrc eingetragen werden.

Effiziente Navigationshilfe: Einträge wichtiger Verzeichnisse in die Variable CDPATH erlauben den direkten Ordnerwechsel quer über Verzeichnisstruktur und Laufwerke.

6. Die wichtigsten Terminaltools

Die Aufwertung der Shell durch externe Tools ist für SSH-administrierte Server unentbehrlich, für die virtuellen Konsolen im Falle des Falles sinnvoll und selbst am Desktop erwünscht. Der letztgenannte Aspekt gilt vor allem für Nutzer, die für Datei- und Verwaltungsaufgaben generell das Terminal bevorzugen.

Taskmanager Htop: Htop (mit gleichnamigem Paketnamen) zeigt beliebig detaillierte Infos zu allen laufenden Prozessen, CPU- und Speicherauslastung und Uptime. Es beherrscht sämtliche Kill-Methoden für randalierende Tasks. Über „F2 Setup“ lässt sich das Tool hinsichtlich Anzeigeinfos und Optik sorgfältig einrichten.

Dateimanager MC: Der Midnight Commander (Paketname „mc“) kann es mit jedem grafischen Pendant aufnehmen und dabei mit 256-Farben-Skins auch noch attraktiv aussehen („Optionen -> Appearance“). Voraussetzung dafür ist der Befehl „TERM=xterm-256color“ in der Datei ~/.bashrc.

Multiterminal Screen: Terminal-Multiplexer wie Screen (mit gleichnamigem Paketnamen) verwalten mehrere Terminal-Sitzungen in einem Fenster. Solche Tools sind auf der grafischen Oberfläche unnötig, aber alternativlos auf Servern, die per SSH verwaltet werden. Wenn Sie Screen starten, scheint gar nichts zu passieren. Um die Vorzüge zu erkennen, beginnen Sie am besten von vornherein mit einer Konfigurationsdatei ~/.screenrc im Home-Verzeichnis. Diese könnte etwa so aussehen wie in der nebenstehenden Abbildung. Hier werden beim Aufruf screen drei Terminals gestartet. Die „Caption“-Anzeige sorgt dafür, dass Sie in der Fußzeile über die geladenen Terminals informiert bleiben. Die Escape-Sequenzen für „Caption“ sind mühsam, aber unter www.gnu.org/software/screen/manual gut dokumentiert.

Fundamentaler Hotkey ist Strg-a, gefolgt von einer Kommandotaste: Strg-a und nachfolgendes n oder p wechselt zur nächsten oder vorherigen Konsole. Strg-a und c startet ein weiteres Terminal, Strg-d schließt das aktuelle. Ein wichtiger Hotkey ist außerdem Strg-a und Esc, weil Sie nur dann im Screen-Fenster mit Taste oder Maus in Listen scrollen können.

Datenträgerbelegung mit Ncdu: Ncdu (mit gleichnamigem Paketnamen) sortiert Verzeichnisse nach der enthaltenen Datenmenge und bietet eine sehr viel bequemere Festplattenanalyse als das Standardwerkzeug du. Denn Ncdu beherrscht wie ein Dateimanager die Navigation zwischen den Verzeichnissen und kann aktiv löschen. Die einzig wichtige Bedienregel, die sich nicht sofort erschließt, ist die Auswahl des Startordners. Ist Ncdu nämlich einmal gestartet, wird es in keine höhere Verzeichnisebene wechseln. Wenn Sie daher das komplette Dateisystem durchforsten wollen, sollten Sie ncdu mit

ncdu /

starten. Ncdu sortiert nach Ordnergrößen, kann aber mit Taste „n“ auch nach Namen sortieren, mit „s“ wieder nach Größe („size“).

Screen und seine Konfigurationsdatei: Das Tool screen macht die typische Terminalvermehrung bei Administratoren zur übersichtlichen Angelegenheit.

7. Befehle suchen

Bash-History mit Schlüsselwörter: Ein hübscher Trick, um interessante, aber seltener genutzte Befehle bei Bedarf schnell wiederzufinden, besteht in der Kommentierung der Kommandos durch Schlüsselwörter. Ein Beispiel:

lsblk -o name,fstype,uuid,size,owner,type,mountpoint,label,model # disk partition detail

Der interaktiv so eingegebene Befehl funktioniert wie gewohnt; alles ab dem Kommentarzeichen „#“ wird einfach ignoriert. Der Befehl landet aber inklusive Kommentar in der Datei ~/.bash_history. Folglich können Sie später in der History-Suche mit Strg-R ein Schlüsselwort wie „detail“ oder „partition“ eingeben, und die Suche wird Ihnen die Befehle mit diesem Kommentar anbieten. Die Wahl der Stichwörter ist dabei die anspruchsvollste Aufgabe: Sie sollten so assoziativ ausfallen, dass Sie bei späterer Suche die Sache schnell eingrenzen können – etwa durch Kategorien wie „task, folder, partition, disk, size, user, right, info, hardware“. Natürlich sind auch deutsche Kommentierungen möglich. Wer diese Möglichkeit nicht nur künftig, sondern rückwirkend nutzen möchte, kann seine .bash_history nachträglich mit solchen Kommentaren erweitern.

Exkurs: Falls Ihre Bash-Shell interaktive Eingaben mit Kommentarzeichen nicht akzeptiert, ist eine Standardeinstellung verstellt. Sie lautet „interactive_comments“ und kann bei Bedarf mit

shopt -s interactive_comments

in der Datei ~/.bashrc explizit aktiviert werden.

Apropos-Programmsuche mit Stichwort: Eine gewaltige Hürde bei der Verwendung der Shell ist die schlichte Frage, welches Kommando sich für welche Aufgabe eignet. Infoportale im Internet sind da oft enttäuschend: Alphabetische Listen sind denkbar unpraktisch, vollständige Bash-Referenzen definitiv nicht das, was man für eine schnelle Kommando-Recherche benötigt, und vorsortierte Präsentationen der „wichtigsten“ Befehle verzichten von vornherein auf Vollständigkeit.

Für eine grobe thematische Suche eignet sich der Befehl apropos, der die Datenbank der Man-Pages nach Stichworten durchsucht (identischer Befehl „man -k [Stichwort]“). So liefert apropos zumindest einen ersten Überblick:

apropos samba

Hier erhalten Sie alle Befehle, die im Zusammenhang mit Samba-Netzwerkfreigaben stehen. Mit dem Schalter „–and“

apropos --and file rename

ist ein UND-Suche nach mehreren Stichwörtern möglich.

Whatis: Was kann ein bestimmter Befehl? Whatis ist das Gegenstück zu Apropos: Es liefert für einen angegebenen Befehl genau dieselbe Kurzbeschreibung aus den Man-Pages wie Apropos. Während Sie also mit Apropos geeignete Programme für eine bestimmte Aufgabe suchen, fragen Sie mit Whatis ab, was ein bestimmtes Programm kann:

whatis diff

Wer einen systematischen Überblick über alle auf seinem System installierten Kommandozeilenprogramme erreichen will, kann diese mit

compgen -c

auflisten und diese Liste gleich mit whatis kombinieren:

for p in $(compgen -c|sort);do whatis $p >> liste.txt;done

Das Ergebnis ist eine Textdatei liste.txt mit alphabetischer Abfolge sämtlicher Systembefehle und jeweiliger Kurzcharakterisierung durch whatis.

8. Alternative Terminals

Wie Punkt 1 zeigte, geben die Standard-Terminals der Linux-Distributionen kaum Anlass, nach Alternativen zu suchen. Die gibt es natürlich: So ist Terminator (mit gleichnamigem Paketnamen) eine Fortentwicklung von Gnome-Terminal mit etlichen Zusatzfunktionen, die etwa den Textzoom mit Strg-Mausmitteltaste erlauben (wie die Konsole unter KDE) oder automatisches Ausblenden bei Fokusverlust. Weitere Funktionen fallen gegenüber dem Gnome-Terminal eher marginal aus.

Das Terminal Terminology (mit gleichnamigem Paketnamen) stammt aus dem Enlightenment-Desktop und ist so eigenwillig wie jener. Terminology entspricht weitgehend dem Gnome-Terminal, hält aber Spezialitäten bereit, die sich nach Rechtsklick automatisch einblenden. Die hier angebotenen Split-Funktionen sowie Kopieren und Einfügen per Mausklick erhöhen den Terminal-Komfort. Unter „Einstellungen“ gibt es weitere Raffinessen wie Hintergrundbilder. Trotz dieser Vorzüge ist Terminology insgesamt gewöhnungsbedürftig und hat auch Nachteile: Schriften-, Farbdarstellung und Zoomfunktion fallen gegenüber den Standard-Terminals ab.

Tilda und Guake: Diese Dropdown-Terminals haben kein interaktiv skalierbares Fenster und keine Titelleiste, sondern blenden sich in fester, aber exakt einstellbarer Größe nach Hotkey F1 (Tilda) oder F12 (Guake) ein und aus. Das Ausblenden kann auch automatisch bei Fokusverlust eingestellt werden, also durch beliebigem Klick außerhalb des Terminalbereichs. Die Einstellungen bieten Transparenz, Einblendanimation, Farbanpassung, Shell-Tabs, Suchleiste und vieles mehr. Im Fenster läuft die Bash – alle Bash-Einstellungen werden also übernommen. Für Terminal-Vielnutzer sind diese stets im Hintergrund wartenden Bash-Dauerläufer eine klare Empfehlung. Die Unterschiede zwischen Tilda und Guake sind marginal und letztlich Geschmackssache. Tilda und Guake sind über die gleichnamigen Paketnamen überall verfügbar.

Fish ist kein alternatives Terminal, sondern eine eigene Shell. Sie ist über den Paketnamen „fish“ überall verfügbar, die aktuellste Version über ein PPA (ppa:fish-shell/nightly-master). Fish bringt Farbe ins Spiel, macht selbständig ergänzende Angebote zu partiellen Eingaben und informiert bei Syntaxfehlern vorbildlich über Korrekturen. Ein Alleinstellungsmerkmal ist die Konfiguration im Browser nach diesem Befehl:

fish_config

Unter „colors“ und „prompt“ wählen Sie aus vorgegebenen Farbschemata und Prompts, und mit „Set Theme“ oder „Set Prompt“ übernehmen Sie das Ergebnis. Wichtig sind die „abbreviations“, da Sie damit Alias-Kurzbefehle anlegen können. Für Scripts verwendet Fish „functions“ mit eigener Syntax. Zielgruppe für die Fish-Shell sind Einsteiger, denen Fish den Terminal-Umgang zunächst in der Tat vereinfacht. Das Problem ist nur, dass sich Bedienung und Script-Konzept von den Standard-Terminals stark unterscheidet: Wer der Fish-Shell wieder den Rücken kehrt, fängt mit Gnome-Terminal & Co. sowie Bash praktisch wieder von vorne an.

Fensterlos und automatisch im Hintergrund: Das Dauerterminal Tilda kann sich in den Hintergrund verabschieden, wenn ein Desktop-Element außerhalb geklickt wird (Fokusverlust).

Zurück zur Linux-Übersichtsseite…