Kommandozeilen-Jongleur
The Answer Girl
Umlaute sind Readline-Sache
Inputrc? Wer bei einer schlecht vorkonfigurierten Distribution schon einmal versucht hat, die Umlaute eines deutschen Keyboards in der Textkonsole zur Darstellung zu bewegen, bei dem/der sollte dieser Name ein Glöckchen läuten. Drei mysteriöse Zeilen (Listing 1) in der /etc/inputrc haben hier schon vielen weitergeholfen – doch wird erst jetzt klar, was sie bedeuten: Mit den darin gesetzten drei Variablen konfiguriert man die Readline-Bibliothek korrekt.
Listing 1
Umlaute in der Konsole funktionieren nur bei richtig gesetzten Readline-Variablen
set meta-flag on # Die nun angeschaltete Variable meta-flag sorgt dafür, dass # die Bash niemals das achte Bit eines Buchstabens abschneidet. # Umlaute lassen sich nämlich nur in 8-Bit-, nicht aber in # 7-Bit-ASCII darstellen. set output-meta on # 8-Bit-Zeichen werden jetzt richtig (und nicht als # komische Escape-Sequenzen) dargestellt. set convert-meta off # convert-meta ist standardmäßig angeschaltet und sorgt dann # dafür, dass 8-Bit-Zeichen in einen Escape-Character und # ein 7-Bit-ASCII-Zeichen konvertiert werden. Umlaute gehen # dabei natürlich kaputt, weshalb diese Option abzuschalten ist.
Doch zurück zur Sache: Das, was wir suchen, ist offensichtlich ein Readline-Kommando, das ein Wort rückwärts löscht. Zwar bietet der naheliegende Unterabschnitt Commands for Changing Text nichts passendes, doch bei Killing und Yanking ("Löschen und wieder einfügen", wobei yank im wörtlichen (und bildlichen) Sinne aus einem ominösen Papierkorb, dem "kill ring" bereits gelöschte Strings wieder "herauszieht") werden wir fündig:
backward-kill-word (M-Rubout)
Kill the word behind the cursor. […]
Wenn wir jetzt noch wüssten, was eine Rubout-Taste ist… Netterweise setzt uns gleich der erste Treffer einer Google-Suche nach Rubout key (Abbildung 2) davon in Kenntnis, dass es sich lediglich um einen anderen Namen für die [Backspace]-Taste handelt. Tatsächlich funktioniert [Esc-Backspace] wie gewünscht – nicht jedoch [Alt-Backspace], was schade ist, aber der Manpage recht gibt, die als Ersatz für die Meta-Taste nur [Esc], nicht aber das bei ordentlichen Emacs-Vorkonfigurationen auch mögliche [Alt] vorsieht.
Der ärgerliche vi-String aus der "index.html vi"-Beispielkommandozeile ist also weg – jetzt müssten wir nur auf schnellstem Wege an den Zeilenanfang zurück, um ihn dort mit C-y, also [Strg-y], wieder einzufügen ("yank"). Der passende Readline-Befehl steht im Abschnitt Commands for Moving und ist mit [Strg-a] leicht zu merken. Dass [Strg-e] den Cursor ans Zeilenende befördert, lernen wir genauso im Vorbeigehen, wie die nützliche Möglichkeit, mit M-b ein Wort vorwärts, mit M-f hingegen ein Wort rückwärts zu springen.
Jetzt fehlt eigentlich nur noch eine Übersicht, die alle vorbelegten Tastenkürzel auflistet und ihre Bedeutung dahinterschreibt. Die gibt es tatsächlich – aber nicht in allen Distributionen. Wer mit man readline eine eigene Manpage zu readline(3) findet, braucht nur in den Abschnitt namens DEFAULT KEY BINDINGS zu schauen. Doch ehe der Rest seinen Distributor verflucht, sei verraten: Dieser Abschnitt ist fast alles, was das readline-Manual dem Bash-Handbuch voraus hat. Wer hier wohl von wem abgeschrieben hat?
Glossar
Shell-Prompt
Das Bereitzeichen der Shell. Erst wenn eine Zeichenkette, die gern den User- und/oder Rechnernamen, aber auch das Arbeitsverzeichnis enthält und typischerweise auf $, > oder (bei root) auf # endet, auf der Kommandozeile zu sehen ist, nimmt die Shell Kommandos an. Selbstverständlich kann der Prompt individuell angepasst werden.
Shell
Der Kommandozeilen-Interpreter, der Benutzerbefehle für die Ausführung durch den Kernel vorbereitet und diesem übergibt. Vom Standpunkt eines Kommandozeilenusers umschließt die Shell den Kernel wie eine Muschel, daher der Name.
X-Terminal
Ein GUI-Programm, das eine Kommandozeile zur Verfügung stellt. Egal, ob sich das Programm xterm, konsole oder aterm nennt, läuft darin immer auch eine Shell.
bash
Die Standard-Shell unter Linux. Ihr Name, "Bourne Again Shell", weist darauf hin, dass sie mit der traditionellen Bourne Shell sh kompatibel ist, aber zusätzlich eine Menge Funktionalität mitbringt, die jene nicht hat.
Emacs
Neben dem vi der zweite, auf fast jedem Unix-System installierte Standard-Texteditor. Wie vom vi auch, existieren verschiedene Implementationen dieses Editors, von denen die beliebteste wohl die GUI-Applikation xemacs ist. Wer sich einmal in die teils recht gewöhnungsbedürftige Bedienung eingearbeitet hat, bekommt ein äußerst vielfältiges, in der Programmiersprache Lisp erweiterbares Tool an die Hand, das dank verschiedener, in Emacs-Lisp geschriebener Module von der Programmierumgebung bis hin zum E-Mail- und News-Programm alle möglichen Einsatzgebiete abdeckt.
Vordergrundprozesse
Ruft man ein Kommando für sich auf der Kommandozeile auf, so bleibt diese Shell so lange blockiert, bis dieses Vordergrundkommando sich beendet. Bei Kommandozeilenbefehlen wie ls ist das normalerweise kein Problem, doch wer ein GUI-Programm aufrufen will, möchte die Shell für die Dauer seiner Benutzung nur ungern unbrauchbar sehen. Deshalb kann man Befehle in den Hintergrund schicken: Fügt man an den Befehl ein & an, blockiert er die aufrufende Shell nicht mehr.



