48 lines
2.3 KiB
TeX
48 lines
2.3 KiB
TeX
% $Id$
|
|
\chapter{Wofür Shell-Programmierung?}
|
|
|
|
Natürlich stellt sich die Frage, in welchen Situationen ein Shell-Skript der
|
|
richtige Weg ist, und wann man vielleicht doch besser zu einer interpretierten
|
|
oder compilierten Sprache greift.
|
|
|
|
\section{Wofür?}
|
|
|
|
Die Shell ist der perfekte Baukasten für das Unix-Paradigma `small is
|
|
beautiful'. Die mitgelieferten Unix-Standardkommandos sind einfach gehalten,
|
|
erledigen aber auf effiziente Weise die Arbeit für die sie programmiert wurden.
|
|
Mit der Shell, bzw. dem Shell-Skript, wird aus dem Heinzelmännchen ein starker
|
|
Riese.
|
|
|
|
Shell-Skripte werden im Wesentlichen aus zwei Gründen geschrieben: Erstens,
|
|
weil man so ständig wiederkehrende Kommandos zusammenfassen kann, die man dann
|
|
mit einem einfachen Aufruf starten kann, und zweitens, weil man so einfache
|
|
Programme schreiben kann, die relativ intelligent Aufgaben erledigen können.
|
|
|
|
Der erste Aspekt ist wichtig, wenn man beispielsweise regelmäßig auftretende
|
|
Aufgaben erledigen möchte, wie z. B. das Backup von Log-Dateien. In dem Fall
|
|
schreibt man sich ein Skript, das die Dateien archiviert, und sorgt dafür, daß
|
|
dieses Skript in regelmäßigen Abständen aufgerufen wird (per
|
|
Cron-Job\index{Cron-Job}).
|
|
|
|
Der zweite Fall tritt ein, wenn man eine mehr oder weniger komplexe Abfolge von
|
|
Befehlen ausführen möchte, die voneinander abhängen. Ein Skript das zum
|
|
Beispiel eine Audio-CD kopieren soll, sollte das Brennprogramm nur dann
|
|
aufrufen, wenn der Einlesevorgang erfolgreich abgeschlossen wurde.
|
|
|
|
\section{Wofür nicht?}
|
|
|
|
Ein Shell-Skript besteht aus einer Abfolge von System-Tool-Aufrufen. Das heißt,
|
|
für jeden Schritt in einem Skript wird ein neuer Prozeß gestartet. Das kostet
|
|
eine Menge Systemzeit, die Skripte laufen also vergleichsweise langsam. Für
|
|
komplexe, zeitkritische oder langwierige Aufgaben sollte man also besser zu
|
|
Perl, Python oder in Extremfällen zu C / C++ greifen.
|
|
|
|
Shell-Skripte können als imperativ angesehen werden, für viele Aufgaben ist
|
|
aber ein objektorientierter Ansatz wesentlich geeigneter. Auch hier ist also
|
|
der Griff zu einer anderen Sprache angeraten.
|
|
|
|
Es gibt zwar ein paar Tools\footnote{Zum Beispiel dialog im Textmodus, oder
|
|
xmessage unter X.}, mit denen auch Shell-Skripte eine grafische oder
|
|
textorientierte Benutzeroberfläche (GUI) bekommen können, aber das ist trotzdem
|
|
nicht das natürliche Terrain der Shell-Programmierung.
|