Rezension: Classic Shell Scripting - Hidden Commands that Unlock the Power of Unix

Cover

Arnold Robbins, Nelson H.F. Beebe

Das Buch im O'Reilly Katalog
1. Auflage Mai 2005
ISBN 0-596-00595-4
ca. 560 Seiten
ca. EUR 34,00

Inhalt

Jeder der sich ernsthaft mit einem Linux- oder Unix-System beschäftigt stößt früher oder später auf das Thema Shellprogrammierung. Als Administrator solcher Systeme kann man sich durch einen Exkurs in diese Richtung nicht nur eine Menge Arbeit sparen, ich würde sogar sagen man kommt überhaupt nicht um die Beschäftigung mit der Shell herum.

Um so wichtiger ist es, einen guten Einstieg zu finden.

Das vorliegende Buch beschäftigt sich mit einer Reihe typischer Techniken aus dem Bereich der Shellprogrammierung. Es gibt Kapitel für den Einsteiger und nach Themen geordnete Bereiche für Fortgeschrittene. Im Einzelnen sieht das so aus:

  • Background
    Hier werden die historischen Hintergründe des Themas beleuchtet. Außerdem werden die Prinzipien beschrieben, die hinter dem Aufbau des 'Werkzeugkastens' stehen, der einem in der Shell zur Verfügung steht ('Do one thing well...').
  • Getting Started
    Dieses Kapitel stellt zunächst die Shellprogrammierung der Entwicklung in compilierten Sprachen gegenüber und geht der Frage nach warum man ausgerechnet in der Shell entwickeln sollte. Darauf folgt eine Beschreibung des Aufbaus und der grundlegenden Techniken wie Textausgabe, Ausgabeumlenkung und Parameterauswertung.
  • Searching and Substitutions
    Neben einer ausführlichen Erklärung der Arbeit mit einfachen und erweiterten regulären Ausdrücken wird hier der Umgang mit den verschiedenen grep-Implementierungen, cut und join sowie Grundlagen von sed und awk gezeigt.
  • Text Processing Tools
    Hier gibt es weitere Techniken für den Umgang mit und die Ausgabe von Texten. Zum Einsatz kommen Tools wie sort, uniq, fmt, wc, head und tail. Außerdem werden die Kommandos für den Umgang mit einem Drucker vorgestellt.
  • Pipelines Can Do Amazing Things
    Eine grundlegende Technik bei der Arbeit in der Shell ist die Verknüpfung mehrerer Kommandos in sogenannte Pipelines. Deren Einsatz zur Lösung komplexer Aufgaben wird in diesem Kapitel gezeigt.
  • Variables, Making Decisions, and Repeating Actions
    Dieses Kapitel geht auf Techniken ein, die die Shell zu einer richtigen Programmiersprache machen: Die Behandlung von Variablen (incl. Klammer-Substitution) und die Möglichkeit von Verzweigungen und Schleifen im Code. Desweiteren lernt man wie man eigene Funktionen schreibt.
  • Input and Output, Files, and Command Evaluation
    In diesem sehr umfangreichen Kapitel geht es um die Möglichkeiten, Eingaben zu verarbeiten und Ausgaben zu erzeugen. Auch wird die Technik der Kommandosubstitution beschrieben, mit der einer Variable die Ausgabe eines Kommandos zugewiesen werden kann. In dem Zusammenhang wird auch eingehend auf schwierigere Themen wie Quoting oder das eval-Kommando eingegangen.
  • Production Scripts
    Hier werden zwei umfangreichere Skripte vorgestellt, die tatsächlich Beispiele aus der Praxis darstellen. Also praktisch 'Real World' statt 'Hello World'. Die Lektüre der Skripte vermittelt einen Eindruck davon wie die besprochenen Techniken in der Praxis verwendet werden können.
  • Enough awk to Be Dangerous
    Eigentlich ist awk viel mehr als nur ein Tool in der Shell. Vielmehr ist es eine eigene Programmiersprache, deren Fokus in der Verarbeitung von Text-Daten liegt. Hier wird auf etwas über 40 Seiten eine Einführung in die Grundlagen gegeben.
  • Working with Files
    Sicherlich ist der Umgang mit Dateien eine der Hauptaufgaben in der Shell. Die Kommandos für die Suche nach Dateien und für das Erlangen von Informationen über Dateien werden hier beschrieben.
  • Extended Example: Merging User Databases
    Ein weiteres komplexes Beispiel wird vorgestellt. Es geht um dieZusammenführung der passwd-Dateien zweier Systeme. Am Ende des Kapitels wird darauf hingewiesen, daß es im 'wirklichen Leben' Probleme geben kann, die von dieser Lösung nicht abgedeckt werden.
  • Spellchecking
    Das Beispiel in diesem Kapitel ist vielleicht nicht für jeden Leser weiterbenutzbar, aber es zeigt eindrucksvoll daß auch in awk komplexe wenngleich elegante Lösungen erstellt werden können. Am Ende entsteht eine Rechtschreibprüfung.
  • Processes
    Dieses Kapitel wendet sich besonders an den Admin. Es wird erklärt was ein Prozeß ist und wie man Informationen über Prozesse bekommt. Außerdem werden Mechanismen wie das Prozeß-Accounting oder die Zeitgesteuerte Ausführung von Kommandos gezeigt.
  • Shell Portability Issues and Extensions
    Hier werden die Fallstricke bei der Portierung von Shell-Skripten zwischen verschiedenen Unix-Systemen gezeigt. Prinzipiell sollte es dabei keine Probleme geben, aber es gibt immer wieder Unterschiede zwischen Shell-Dialekten und den jeweiligen Implementierungen der verwendeten externen Tools.
  • Secure Shell Scripts: Getting Started
    Ein sehr wichtiges Thema, das gerade bei Quick-and-Dirty-Lösungen (und die kommen in der Shellprogrammierung sehr häufig vor) oft vernachlässigt wird ist die Sicherheit der laufenden Skripte. Hier werden einige Regeln gezeigt die man beachten sollte.

Weiterhin gibt es drei Anhänge: Die Erstellung von Manual-Pages, eine ausführliche Abhandlung zu Dateisystemen und wie Unix damit umgeht sowie eine kurze Auflistung der wichtigsten Shell-Kommandos.

Fazit

Ich persönlich kann natürlich kaum widerstehen, dem interessierten Einsteiger mein eigenes Machwerk zu dem Thema zu empfehlen, auch wenn es dem vorliegenden Buch in den meisten Bereichen nicht das Wasser reichen kann. :-)

Classic Shell Scripting ist ohne Zweifel sehr gut geschrieben. Der lebendige Stil bindet das Interesse, die Beispiele sind nicht zu komplex und somit wirklich gut nachvollziehbar. Sie lenken den Blick auf die zu vermittelnden Techniken, so kann sich der Leser wirklich immer auf seinen aktuellen Fokus konzentrieren. Jedes Kapitel schließt mit einer 'Summary', die die besprochenen Themen rekapituliert.

Die verwendeten Kommandos werden so vorgestellt wie sie gebraucht werden. Das bringt es leider mit sich, daß einzelne Tools an mehreren oder an unerwarteten Stellen im Buch erscheinen. Das gut gemachte Stichwortverzeichnis läßt diesen Umstand aber schnell verschmerzen.

Alles in allem ist das Buch für jeden Einsteiger in das Thema sehr zu empfehlen, und auch der Fortgeschrittene für den die Arbeit in der Shell zum täglichen Geschäft gehört wird die eine oder andere Anregung finden. Es ist auf jeden Fall eine große Bereicherung für das Regal jedes Shellprogrammierers.

Ach ja, was mich noch irritiert hat: Im Online-Katalog von O'Reilly trägt dieses Buch den Untertitel 'Hidden Commands that Unlock the Power of Unix'. Der taucht auf dem Buch selbst nicht mehr auf, und das ist gut so. Das klingt irgendwie nach den Sammlungen von 'Geheimtips' mit denen Computerzeitschriften werben wenn ihnen die Themen ausgehen...

Probekapitel im PDF-Format