© Thomas Max Müller, Pixelio.de
Was der User tippen will - die Bash ahnt es dank Perl im Vorhinein
Stets zu Diensten
von Michael Schilli
Erschienen im Linux-Magazin
2010/04
Der Complete-Mechanismus der Shell vervollständigt angefangene Eingaben, sobald der User die Tabulator- taste drückt. Ein Perl-Skript erweitert die Funktion maßgeschneidert.
Die [Tab]-Taste hängt oft schon ziemlich ausgeleiert in der Tastatur, so beliebt ist bei vielen das Angebot der Bash-Shell, halb eingegebene Bezeichnungen für Befehle, Verzeichnisse und Dateien auf intelligente Weise zu vervollständigen.
Standardrepertoire
Das Standardrepertoire der Bash-Komplettierung zeigt Abbildung 1. Drückt der Benutzer gleich nach der auf der Kom mandozeile eingegebenen Tastenfolge [L]+[S]+[M] die [Tab]-Taste, vervollständigt die Bash das sofort zu »lsmod«, dem Kommando für die Abfrage installierter Kernelmodule. Warum? Das eingegebene Buchstabentrio stand am Anfang einer Kommandozeile, weshalb es sich um einen ausführbaren Befehl handeln muss. Im eingestellten Pfad (»$PATH«) fand sich kein anderer Befehl mit diesen drei Anfangsbuchstaben, also tat die Bash das einzig Richtige.
Auf der Kommandozeile Nummer 2 in Abbildung 1 gab der User hingegen nur zwei Buchstaben vor und tippte nach »ls« auf die [Tab]-Taste. Auch hier kommt nur ein Befehl und keine normale Datei in Frage. Aber die Vorgabe ist nicht eindeutig, denn im Pfad befinden sich Dutzende von Kommandos, die mit »ls« beginnen. Also schweigt die Bash still und wartet, bis der Benutzer noch ein weiteres Mal auf [Tab] drückt, woraufhin sie dann eine kompakte Auflistung aller möglichen Ergebnisse präsentiert und den User weitere Buchstaben eingeben lässt, um die Anzahl der Treffer einzuschränken.
1731 Möglichkeiten
Erfolgt der [Tab]-Tastendruck im zweiten Wort einer Zeile oder danach wie in der vierten Kommandozeile in Abbildung 1, folgert der Ergänzungsmechanismus, dass der User dem Kommando »ls« eine Datei zugesellen will. Allerdings passen darauf sehr viele, sodass die Bash nach einem einmaligen [Tab] stillschweigt und nach einem Doppeldruck wie in Zeile 5 erst einmal nachfragt, ob sie wirklich alle 1731 Möglichkeiten anzeigen soll. Gibt der User mehr Buchstaben vor wie in den Zeilen 6 und 7 und schränkt damit die Lösungen ein, folgt auf einen Doppel-[Tab] wieder eine Auflistung sinnvoller Ergänzungen. Erst wenn die Wahl eindeutig ist, komplettiert die Bash die Zeile.

|
Abbildung 1: Normalerweise vervollständigt die Bash Kommandos und Namen zu bearbeitender Dateien, sobald der User die [Tab]-Taste drückt.
|
Auch Teilergänzung kommt vor: Gibt der User wie in Kommandozeile 8 »/etc/up« vor und drückt einmal auf [Tab], vervollständigt die Shell sofort auf »/etc/update«, obwohl, wie sich hinterher herausstellt, es mit »update-manager« und »update-notifier« zwei Möglichkeiten gibt. Die Teilkomplettierung war jedoch hilfreich, um den Pfad bis zum Scheideweg abzukürzen.
Das auf der Bash-Manualseite (»man bash«) unter »Programmable Com letion« dokumentierte »complete«-Kommando erlaubt es dem programmierwütigen Shellanwender, das Standardrepertoire gehörig aufzupeppen. Das Projekt Bash Completion [2] bietet eine ganze Sammlung von Ergänzungsregeln zum Download an, die der Nutzer dann in der lokalen Datei ».bashrc« einbindet.
Dieses Gehirnimplantat für die Bash bringt ihr kommandospezifische Regeln bei und vervollständigt Kommandooptionen. Gibt der User zum Beispiel die Zeichenfolge »git com« ein und drückt die [Tab]-Taste, vervollständigt der Mechanismus zu »git commit«, da dies das einzige verfügbare Subkommando des Versionskontrollwerkzeugs ist, das mit »com« anfängt. Weitere Erläuterungen der Complete-Funktion finden sich in kurzen Abschnitten in Büchern zum Thema Bash, etwa in [4] und [5].
Doch während die Skriptsammlung auf [2] Bash-Funktionen baut, wissen erfahrene Perl-Programmierer, dass Shellskripte zwar schnell von der Hand gehen, sich mit steigender Komplexität jedoch oft als Sackgasse erweisen. Schuld sind die begrenzten Kapselungsmöglichkeiten der Shell. Manch ein Shellskript hätte sein Programmierer besser gleich in einer vollständigen Skriptsprache implementiert, denn früher oder später wird es eh umgeschrieben, sobald es über einen Prototyp hinauswächst.
| Whitepaper |
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|