Shell-Programmierung/wofuer_shell_programmierung.tex

48 lines
2.3 KiB
TeX
Raw Permalink Normal View History

2003-04-11 15:05:25 +00:00
% $Id$
2001-07-02 12:52:18 +00:00
\chapter{Wof<EFBFBD>r Shell-Programmierung?}
2004-12-02 13:54:06 +00:00
Nat<EFBFBD>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<EFBFBD>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<6C>nnchen ein starker
Riese.
2001-07-02 12:52:18 +00:00
Shell-Skripte werden im Wesentlichen aus zwei Gr<47>nden geschrieben: Erstens,
weil man so st<73>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<6C><6D>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<61>r, da<64>
dieses Skript in regelm<6C><6D>igen Abst<73>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<73>hren m<>chte, die voneinander abh<62>ngen. Ein Skript das zum
Beispiel eine Audio-CD kopieren soll, sollte das Brennprogramm nur dann
aufrufen, wenn der Einlesevorgang erfolgreich abgeschlossen wurde.
2004-12-02 13:54:06 +00:00
\section{Wof<EFBFBD>r nicht?}
Ein Shell-Skript besteht aus einer Abfolge von System-Tool-Aufrufen. Das hei<65>t,
f<EFBFBD>r jeden Schritt in einem Skript wird ein neuer Proze<7A> 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<6D>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<66>che (GUI) bekommen k<>nnen, aber das ist trotzdem
nicht das nat<61>rliche Terrain der Shell-Programmierung.