Open Source im professionellen Einsatz

Geschichtsstunde

Ein weiteres wichtiges Feature der Shell ist die Historie. Statt Befehle nochmals zu tippen, sucht der Anwender den Befehl einfach in der Liste der bereits eingegebenen Befehlszeilen. Das funktioniert sowohl mit den Pfeil- und Bildtasten als auch mit Suchfunktionen. Am bekanntesten ist wohl [Ctrl]+[R] für die inkrementelle Rückwärtssuche. Weniger bekannt und in der Notation obskur erscheinen aber die Möglichkeiten der so genannten History-Expansion. Mit »!n« referenziert der Kommandozeilen-User einen Befehl der Historie. Wer dessen Nummer nicht mehr weiß, schaut mit »history« die Liste der gespeicherten Befehle an. Das gelingt auch mit relativer Referenzierung: Der Aufruf »!-3« etwa bezieht sich auf den drittletzten Befehl. Der Spezialfall »!!« ist identisch zu »!-1«.

Interessant sind die Substitutionsmechanismen: »!!:s/foo/bar/« ersetzt den String »foo« durch »bar« im letzten Befehl. Das geht sogar noch einfacher: »^foo^bar^«. Neben der Substitution unterstützt die Shell-Historie noch weitere Flags, um die ausgewählte Zeile zu ändern. Die Befehle lehnen sich an Sed an, aber insgesamt ist das alles zu kryptisch, um es sich zu merken, und Nachschlagen dauert länger als Tippen. Die von Perl inspirierte Kombination mit fünf Sonderzeichen »!#$ESC^« legt das Beispiel auf die Funktionstaste [F3], damit erspart man sich sogar das oben erwähnte Keyboard-Makro.

[Tab] ist des Kommandozeilen-Users bester Freund, sie komplettiert Befehle und Dateinamen. Findet die Bash jedoch das Paket »bash-completion« vor, kennt die Taste plötzlich zusätzlich Optionen und Subkommandos vieler Programme.Wer nicht alle Optionen von »grep« auswendig kennt, tippt nach »grep foo --« zweimal die Tabulatortaste (siehe Abbildung 2). Das Paket ist übrigens in der Bash implementiert und leicht erweiterbar. Die zugehörige Datei »README« liest sich in Teilen wie eine Zusammenfassung der Bash-Bashing-Serie, denn der Completion-Code soll natürlich möglichst effizient sein.

Abbildung 2: Findet die Shell das Paket Bash-Completion vor, kennt sie plötzlich eine große Anzahl von Optionen vieler wichtiger Shellkommandos.

Abbildung 2: Findet die Shell das Paket Bash-Completion vor, kennt sie plötzlich eine große Anzahl von Optionen vieler wichtiger Shellkommandos.

Bash ist nicht nur eine mächtige Skriptsprache, sondern auch als Shell leicht und effizient zu bedienen. Wichtige Tastenkombinationen gehören an die Pinnwand über dem Schreibtisch, immer wieder genutzte Verzeichnisse in Aliase oder Umgebungsvariablen.

Gewonnene Lebenszeit

Die mächtigen Readline- und History-Funktionen sind übrigens nicht Bash-spezifisch. Jeder Programmierer kann in seine Projekte die Libreadline und die Libhistory einbinden - sogar in ein GUI-Interface. Die entsprechenden Wrapper sind auch für andere Programmiersprachen zu haben. (mg)

Der Autor

Bernhard Bablok betreut bei der Allianz Shared Infrastructure Services ein Datawarehouse mit technischen Performancemessdaten von Mainframes bis zu Servern. Wenn er nicht Musik hört, mit dem Rad oder zu Fuß unterwegs ist, beschäftigt er sich mit Linux oder Objektorientierung.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 2 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook