7.6 Die Shell anwenden
Bei der Anwendung der Shell ist generell zwischen zwei verschiedenen Arten der Verwendung zu unterscheiden. Die erste Möglichkeit besteht darin, sie als Arbeitsumgebung, also als Benutzerschnittstelle, zu verwenden. Man startet aus ihr heraus Programme, etwa einen Editor, mit denen man dann Arbeiten verrichtet.
Die zweite Verwendungsmöglichkeit besteht in der Programmierung von Shellskripts. Jede Shell hat dafür ihre eigene Shellskript-Sprache. Wir unterscheiden hierbei primär die Syntax der Bourne-Shell- und der C-Shell-Familie.
Um Ihnen eine Vorstellung vom Unterschied der Syntax beider Varianten zu geben, ist im Folgenden jeweils ein Beispielskript zur Bourne- und zur C-Shell aufgeführt. Beide Shellskripts erledigen die gleiche Aufgabe, sehen aber doch recht unterschiedlich aus. Im Laufe dieses Kapitels werden wir uns mit der Syntax der Bourne-Shell befassen, wonach Sie dann die meisten Shellskripte des Systems verstehen können.
Listing 7.9 Bourne-Shell-Skript
#!/bin/sh
for file in dateiA dateiB dateiC; do
cp $file /backup/
done
if [ "$a" = "test" ]
then
echo $a
fi
Listing 7.10 C-Shell-Skript
#!/bin/csh
foreach file ( dateiA dateiB dateiC )
cp $file backup/
end
if ($a == "test") then
echo $a
endif
Shellskripte dienen primär zur Automatisierung von administrativen Arbeitsschritten oder zur Initialisierung und zum Start wichtiger Programme beim Booten des Systems.
Dieses Kapitel wird sich zunächst mit den Grundlagen der Shell befassen. Anschließend werden wir uns in Kapitel 8 den regulären Ausdrücken und den Tools sed und awk widmen. Außerdem werden wir uns in Kapitel 10 mit Editoren und in Kapitel 11 mit Bourne-Shell-Programmierung, also Shellskriptprogrammierung, befassen.
Doch bevor wir mit den Grundlagen beginnen, sei noch etwas zu den Vor- und Nachteilen der Shellskriptprogrammierung gesagt.
Im Vergleich zu anderen interpretierten Programmiersprachen wie Perl sind Shellskripts äußerst langsam. Dies liegt besonders daran, dass einzelne Programme erst aus dem Skript heraus – oft auch mehrmals hintereinander neu – gestartet werden müssen, was sehr viel Zeit kostet. Im Vergleich zu hochperformanten Sprachen wie C++, bei denen die Programme direkt als Binärdatei vorliegen und kein Skript- Interpreter vonnöten ist, ist die Shell natürlich noch viel langsamer.
Der Vorteil der Shell liegt allerdings in der Einfachheit und Flexibilität, mit der Skripts erstellt und gewartet werden können. Shellskriptprogrammierung ist einfach und effizient. Da Sie eigentlich nur auf bereits vorhandene Programme zugreifen müssen, ist es nicht notwendig, komplexe Algorithmen zu implementieren, was in der Regel auch gar nicht möglich ist. Sie sollten in der Shell also keinen Binärbaum implementieren wollen, dafür kann aber beispielsweise binnen kürzester Zeit und mit einem Bruchteil des Aufwandes, den Sie in Sprachen wie C oder Java benötigen würden, ein Skript für das Systembackup erstellt werden.
Zudem sind Shellskripts unter Unix-Systemen sehr portabel, zumindest wenn man sich an gewisse Standards hält. Oftmals müssen Sie gar nichts anpassen und wenn doch, dann in der Regel nur Pfade oder Programmparameter. Die Wahrscheinlichkeit, dass ein bash-Skript, das unter Linux geschrieben wurde, auch unter Solaris oder OpenBSD läuft, ist groß.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.