Die Shell: Das unbekannte Wesen

Shell Skripts selbstgemacht

Von Alexander Scheb

 

Einleitung

Mittels Shell Skripts lassen sich Standardaufgaben unter LINUX automatisieren. Um minimale Programmierkenntnisse kommen Sie nicht herum, wenn eigene Lösungen anstehen. Der Aufbau solcher Skripts ist prinzipiell einfach. Die Shell stellt dem Entwickler diverse Kommandos zur Verfügung. Kombiniert man diese ideal miteinander, kann man beachtliche Lösungen erzielen. Zum Einstieg demonstrieren wir hier etliche Beispiele aus dem Praxisalltag.

 

Einführung

Die heutigen Anwender setzen gerne grafische Desktop-Umgebungen wie KDE oder GNOME ein. Jedoch ist und bleibt die Shell-Ebene immer noch flexibler und leistungsfähiger. Hierüber wird jegliche Kommunikation zwischen dem Benutzer und dem Betriebssystem abgewickelt. Damit lassen sich komplizierte Anweisungen definieren, was mit dem Desktop nie möglich wäre. Die Leistungsfähigkeit des Betriebssystems LINUX kann nur so ausgenutzt werden. Bereits beim Hochfahren des Systems greift LINUX auf sogenannte "Shell Skripts" zu. Da beim Systemstart fast immer die gleichen Operationen auszuführen sind, ist der Aufruf über Skripte ein idealer Lösungsansatz. Der Systemstart kann  auf diese Weise möglichst flexibel gestaltet werden. Gerade im Alltag fallen ständig wiederkehrende Aufgaben an, einzelne Kommandos oder eben Kommandofolgen kommen im Alltag immer wieder vor. Nun wäre es unsinnig, diese immer wieder einzutippen. Deshalb besteht die Möglichkeit, diese in einer Datei, einem sogenannten "Shell-Skript" abzuspeichern.  Auf einmal laufen nun die einzelnen Kommandos automatisiert ab, wenn man dieses Skript aufruft.

 

Die Shell-Ebene

Für die Basisaufgaben des Betriebssystems stellt die Shell entsprechende Shell-Tools bzw. Shell-Kommandos bereit. Um sich den aktuellen Inhalt des Verzeichnisses anzuschauen, steht das Shell-Kommando "ls -l" dem Anwender zur Verfügung. Eine Datei lässt sich leicht über das Shell-Kommando "cp" kopieren. Soll eine Datei gelöscht oder in ein anderes Verzeichnis verschoben werden, kommen die Shell-Kommandos "rm" und "mv" in Betracht. Dabei hat jedes Shell-Kommando einen fest vorgegebenen Syntaxaufbau. Hält sich der Anwender nicht daran, kommt es unweigerlich zu Fehlermeldungen. Jedes Shell-Kommando besitzt einen festen Befehlsnamen. Zudem verfügt jedes Shell-Kommando über eine Reihe von Optionen, die der Anwender je nach Situation einsetzen kann. Dadurch wird die Funktionsweise des Shell-Kommandos präzisiert. Die Shell erkennt Optionen prinzipiell daran, dass diese mit einem Bindestrich beginnen. Fast bei jeder Option muss ein konkreter Übergabewert definiert werden. Zum Beispiel lässt sich so der Name eines Verzeichnisses oder der Dateiname angeben. Die Aktivität des Shell-Kommandos wird hierüber konkretisiert. Der Aufbau eines Shell-Kommandos sieht folgendermaßen aus:

Kommandoname [--Option = Wert]

Solche Shell-Kommandos werden intern in den Shell-Skripten verwendet. Ein Shell-Skript ist eine einfache Textdatei mit einer logischen Abfolge von Kommandos, welche zeilenweise ausgeführt werden. In der Praxis stößt man schnell auf ein Problem, wozu es noch kein Shell-Skript gibt. Mit ein bisschen Grundwissen kann man jedoch selbst Hand anlegen.

 

Mehr Komfort gefragt

Besonders beliebt ist unter LINUX, einen Alias-Namen für bestimmte LINUX-Befehle zu setzen. So wird ab sofort der LINUX-Befehl in einer leicht abgewandelten Form ausgeführt. Zum Beispiel lässt sich so angeben, dass standardmäßig beim Auflisten eines Verzeichnisses die ausführliche Darstellungsform erscheinen soll. Der Anwender kann das Verhalten des Systems somit flexibel beeinflussen und seinen eigenen Vorstellungen anpassen. Besonders gefährlich ist der Einsatz des LINUX Kommandos "rm": Dieser löscht in der Standardeinstellung alle Dateien ohne Vorwarnung und eine Wiederherstellung ist leider nicht mehr möglich. Also empfiehlt es sich, dieses Kommando entsprechend umzudefinieren. Das Kommando "rm" verfügt über die Option -i. Setzt man diese, wird nachgefragt, ob die Löschung auch wirklich erfolgen soll. Dies dürfte zur Bedienungs­sicherheit wesentlich beitragen. In der Praxis wird häufig ein Alias gesetzt, sobald die Eingabe eines überlangen Befehls umgangen werden soll. Wird die Definition des Alias innerhalb des Konfigurationsskript bash_profile eingetragen, steht diese nach der Anmeldung immer zur Verfügung. Hierzu einige kleine Beispiele zur Anwendung am Shell-Prompt:
alias ls='ls -l'

alias cp='cp -i'

alias mv 'mv -i'

alias rm='rm -i'

Welche Alias aktuell gültig sind, erfährt man, wenn der Befehl "alias" am Shell-Prompt eingegeben wird.

 

Die Shell

Jedoch ist ein Shell-Skript alleine wertlos. Die sogenannte Shell oder das Shell-Programm übernimmt die Aufgabe, solche Shell-Skripte auszuführen. Dabei nimmt es die einzelnen Kommandos entgegen und weist das Betriebssystem an, diese auszuführen. Da LINUX einen modularen Aufbau hat, können verschiedene Arten von Shells, wie Korn-Shell=csh, Bourne-Shell=sh oder die C-Shell=csh zum Zuge kommen. Als Standard hat sich mittlerweile die Bash (Bourne Again Shell) unter LINUX etabliert, da diese die meisten Features (Tabelle 1) aufweist. Da jede Shell einen anderen Skript-Dialekt unterstützt, muss jedes Shell-Skript als Erstes (1. Skriptzeile) angeben, mit welcher Shell dieses ausführbar ist. In der ersten Skriptzeile ist in den meisten Fällen das Kommando #!/bin/sh zu sehen. Jedoch ist dies nichts weiteres als ein Verweis (/bin/sh - bash) auf die tatsächlich verwendete Shell. Standardmäßig wird auf jedem Linux System eine bestimmte Shell genutzt, die sich leicht ermitteln läßt. Man gibt einfach das Kommando "ls -l /bin/sh" am Shell-Prompt ein. Jetzt sieht man, welche Shell zum Einsatz kommt.

Tabelle 1: Die Features der verschiedenen Shells

 

Bourne

C

TC

Korn

BASH

command alias

No

Yes

Yes

Yes

Yes

shell scripts

Yes

Yes

Yes

Yes

Yes

filename completion

No

Yes

Yes

Yes

Yes

command line editing

No

No

Yes

Yes

Yes

job control

No

Yes

Yes

Yes

Yes

command history

No

Yes

Yes

Yes

Yes

 

Die Umgebungsvariablen der Shell

Der Shell-Interpreter verfügt über eine eigene Umgebung. Dort sind verschiedene Umgebungsvariablen für das System definiert. Das System benötigt diese Umgebungsvariablen, um die Systemprogramme zu finden oder festzulegen, wo das Heimat-Verzeichnis des Benutzers liegt. Zusätzlich erfährt man hierüber auch den Typ des Terminals, wie der Anmeldungsname heißt oder welche Shell verwendet wird. Alle Systemvariablen werden standardmäßig in Großbuchstaben angegeben. In Tabelle 2 sind diese zusammengefasst. Die Shell Skripts verwenden solche Systemvariablen, um mit ihnen diverse Aufgaben umsetzen zu können. Wo das System generell nach Programmen sucht, wird über die Umgebungsvariable $PATH definiert. Die $PATH Angabe kann der Anwender individuell definieren.

Tabelle2: Die Umgebungsvariablen der Shell

$HOME

Das Heimatverzeichnis des Benutzers

$PATH

Der aktuelle Suchpfad nach Programmen

$LOGNAME

Der Anmeldename des aktuellen Benutzers

$SHELL

Der Name der verwendeten Shell

$TERM

Der Typ des Terminals

$HOSTNAME

Der Hostname des Rechners

$LANG

Die aktuell verwendete Sprache

$USER

Der aktuelle Benutzername

 

 

Das erste kleine Shell Skript

Für uns als LINUX Anwender wäre es nun nützlich zu sehen, welche Umgebungsvariablen für die Shell aktuell definiert sind. Dies ist für unsere Arbeit nicht gerade unerheblich. Hierzu könnten wir unser erstes kleines Shell Skript schreiben, welches diese Aufgabe bewerkstelligt. Hierzu setzen wir einfach das Shell-Kommando "echo" ein. Das Shell-Kommando "echo" hat die Aufgabe bestimmte Zeichenketten oder Variablen auszugeben. In unserem Fall gibt dieses alle aktuellen Umgebungsvariablen auf dem Terminal aus.


#Shell-Skript: "Ausgabe alle Umgebungsvariablen"
# Alle Shell Umgebungsvariablen anzeigen

#!/bin/sh

echo Uebergabeparameter: $*

echo Benutzer ist: $USER

echo Shell-Umgebung ist: $SHELL

echo Der Anmelde-Name entspricht: $LOGNAME

echo Das Heimat-Verzeichnis ist: $HOME

echo Der Host-Rechername ist: $HOSTNAME

echo Die aktuelle Sprache ist: $LANG

echo Der Terminaltyp ist: $TERM

Die Erstellung von Shell Skripts

Mit einem beliebigen Texteditor (vi, joe) ist solch ein Shell Skript zu erstellen. Jedoch läßt sich das Skript nicht direkt ausführen. Im LINUX System ist zuerst das Ausführungsrecht für diese Datei zu setzen. Über das Shell-Kommando "chmod a+x [skriptname]" setzen wir fest, daß alle Benutzer dieses Shell Skript verwenden dürfen. Das Kommando kann natürlich nur der Administrator ausführen. Ein Shell-Skript kann wie ein normales Kommando gestartet werden. Mittels ./[shellname] ist das Skript nun aufrufbar. Unter Umständen erhalten Sie auch jetzt noch eine Fehlermeldung. Diese teilt mit, daß die Datei nicht gefunden werden konnte. In diesem Fall ist es sehr wahrscheinlich, daß die Shell Umgebungsvariable $PATH nicht das aktuelle Verzeichnis überprüft. Dies wird korrigiert, indem man auf der Kommandozeile einfach PATH=$PATH: eingibt, oder die Konfigurationsdatei .bash_profile entsprechend abändert. Anschließend ist eine Ab- und Anmeldung notwendig, um die Umgebung zu aktualisieren. Sollte das Shell Skript wie gewollt  funktionieren,  können Sie dieses natürlich auch der LINUX Gemeinde zur Verfügung stellen. Es gibt im Internet etliche Ressourcen, wo man Sammlungen von Shell-Skripten findet. Vielleicht wird hier gerade das Skript gefunden, welches  man schon lange gesucht hat.

 

Verschiedene kleine Shell Skripts

Innerhalb der Skripts lassen sich auch benutzerdefinierte Variablen anlegen. Solche Variablen werden gewöhnlich vor ihrer Verwendung deklariert und müssen zudem klein geschrieben werden. So können diese von den Systemvariablen unterschieden werden. Jede Variable wird automatisch als Zeichenkette betrachtet. Innerhalb von Variablen werden konkrete Werte abgelegt. Innerhalb eines Shell Skripts werden diese Variablen als Wert für eine Option eines Kommandos angegeben. So kann zum Beispiel ein Skript nach einer bestimmten Datei suchen, welche vorher innerhalb einer Variable zentral definiert wurde. Gewöhnlich werden Zeichenketten in doppelten Anführungszeichen angegeben. Eine Variable kann ebenso als Eingabespeicher für Texte fungieren. Alle Benutzereingaben werden dann innerhalb dieser Variable abgelegt. Nun ein paar kleine Shell Skripts zu diesem Sachverhalt:

Shell-Skript1: "Das Skript sucht nach einer bestimmten Datei"
#!/bin/sh
Datei="installing.htm"
Verz="/"
rm $Verz + $Datei
echo "Die Datei $Datei im Verzeichnis $Verz wurde gelöscht!"



Shell-Skript2:"Das Skript realisiert eine Benutzereingabe"
#!/bin/sh
eingabe="Bitte etwas eingeben:"
echo $eingabe
read eingabe
echo $eingabe



Shell-Skript3: "Das Skript führt eine (j/n) Eingabeabfrage durch"
#!/bin/sh
# Interaktive Eingabe, if-Abfrage
echo Wollen Sie diese Operation ausführen?
echo Ihre Antwort, n/j:
read answer
echo Ihre Antwort war:
$answer
if [ "$answer" != "n" ]
then echo okay
else echo schade
fi


Das erste Shell-Skript legt zu Beginn zwei benutzerdefinierte Variablen (Datei, Verz) an. Dann setzt das Skript das Shell-Kommando "rm" ein und setzt die Variablen als Übergabeparameter ein. Das Skript hat die Aufgabe, die angegebene Datei im Skript zu löschen. Anschließend wird ausgegeben, daß eine betreffende Datei gelöscht wurde.

Im folgenden Shell-Skript wird um eine Benutzereingabe des Anwenders gebeten. Mittels des Shell-Kommandos "echo" wird ein Anzeigetext eingeblendet, daß etwas einzugeben ist. Das Shell-Kommando "echo" hat die Aufgabe, bestimmte Zeichenketten oder Variablen auszugeben. Per Shell-Kommando "read" werden nun alle Eingaben des Anwenders in die Variable "eingabe" abgelegt. Zum Schluß wird diese Eingabe einfach wieder ausgegeben.

Im letzten Shell-Skript ist eine Eingabeabfrage realisiert. Dieses Skript prüft, ob bestimmte Eingaben (eben ob "ja" oder "nein" eingegeben wurde) vorliegen. Hier kommt das Shell-Kommando "read" wieder zum Einsatz. Je nach Auswahl des Anwenders wird zum Schluß ein entsprechendes Ergebnis auf dem Terminal angezeigt.

 

Die Basics zur Shell Programmierung

Jetzt sollten wir uns anschauen, wie der grundsätzliche Aufbau jedes Shell Skripts aussieht. Jedes Shell-Skript verlangt beim Aufruf die Angabe bestimmter Übergabeparameter. Hierüber wird der Ablauf des Shell Skripts gesteuert. Damit sich die Skripte möglichst komfortabel einsetzen lassen, verfügt jedes Skript über eine sogenannten Hilfetext. Damit sich der Anwender sofort informieren kann, wie das Shell-Skript einzusetzen ist, kann dieser überall den Übergabeparameter --help anwenden. Daraufhin wird ein umfangreicher Hilfetext für das Kommando aufgelistet. Dies ist eine festgelegte Standardisierung, wo jeder Shell-Programmierer sich dran halten sollte. Andernfalls wird wohl kaum einer bereit sein, ihre Shell-Skripts zu benutzen. Deshalb ist es standardmäßig so, daß jedes Skript sofort prüft, ob diverse Übergabeparameter angegeben sind. Wird das Shell-Skript vom Anwender falsch gehandhabt, wird eine Fehlermeldung ausgegeben und die Hilfe zusätzlich eingeblendet. Somit kann der Anwender direkt nachschauen, was er falsch gemacht hat. In diesem Fall wird das Skript mit dem Status ungleich 0 beendet. Wird hingegen ein gültiges Argument übergeben, wird das Skript mit dem Status 0 beendet. Das besagt, daß das Skript korrekt beendet werden konnte. Der grundlegende Aufbau eines Shell Skripts sieht folgendermaßen aus:

#Shell-Skript: „Beispiel für den grundlegenden
# Aufbau eines Shell-Skriptes“
!/bin/bash
start() { echo "Start" exit 0 }
stop() { echo "Start" exit 0 }
status() { echo "Der aktuelle Status" exit 0 }

# Übergabe-Parameter auswerten:
# Es werden -help -start -stop und
case "$1" in

start) start ;;
stop) stop ;;
status) status ;;
restart) stop start ;;
*)

echo "Skriptaufruf: Parameter=[start|stop|status]"
exit 1;;
esac

Dies stellt der Rahmencode eines einfachen Shell-Skriptes dar. Das Skript berücksichtigt die Übergabeparameter start, stop, status und restart. Durch das Kommando exit wird gewährleistet, daß ein Skript einen sinnvollen Exit-Code zurückgeliefert. Dies ist bei einer verschachtelten Skriptausführung sehr wichtig. Wenn ein Skript für sich ein anders Skript aufruft, ist es wichtig, ob dessen Ausführung erfolgreich war. Das wird über den sogenannten Exit-Code sichergestellt. Deshalb sollte jedes Skript mit einem Exit-Code beendet werden. Somit ist die Wiederverwendbarkeit der Skripts sichergestellt und entspricht so der Linux Philosophie. Ein Skript gibt immer den Wert null zurück, wenn die Ausführung erfolgreich war.

 

Nie findet man das, was man gerade sucht!

Häufig wird im Praxisalltag eine Datei nicht gleich gefunden, die gerade gebraucht wird. Für diese Anforderung ist der Shell-Kommando "find" geradezu prädestiniert. Das Kommando durchsucht den Verzeichnisbaum nach Dateien und Verzeichnissen und sucht dabei nach bestimmten Eigenschaften. Die Funktionsweise des Kommandos wird vom Anwender beim Aufruf angegeben.  Wieso schreiben wir nicht einfach ein kleines Shell Skript, welches nachfragt, nach welcher Datei und in welchem Verzeichnis die Suchoperation via des Kommandos find erfolgen soll. Dies ist schnell erledigt. Über das Kommando echo geben wir einen Ausgabetext wieder aus und mittels des Kommandos“ read“ lesen wir die Eingaben in diverse Variablen hinein. Anschließend verwenden wir die Variablen beim find-Kommando. Über die Option -name geben wir an, daß die folgende Angabe sich auf Dateien bezieht. Standardmäßig agiert das Kommando so, daß es gefundene Dateien als Ergebnis zurückgibt. Es lassen sich auch verschachtelte Operationen ausführen. Zum Beispiel kann man anweisen, die gerade gefundenen Dateien zu löschen. Dies geschieht über den Schalter -exec. Hierüber gibt man an, daß anschließend ein weiterer Befehl ausgeführt werden soll. Mittels rm "{}" werden alle Dateien der Ergebnismenge gelöscht. Diese Dateien werden dann rekursiv ohne Abfrage gelöscht. Hieran sieht man , wie leistungsfähig die Shell-Ebene ist. Dies ist unser kleines Shell Skript als Beispiel:


Shell-Skript: "Das Skript sucht nach einer bestimmten Dateien und löscht diese dann rekursiv"
#!/bin/sh
echo Geben Sie die Datei an, welche Sie löschen wollen?
read Datei
echo In welchem Verzeichnis soll nach der Datei gesucht werden?
read Verz
#Das Shell-Kommando "find" im Einsatz
find $Verz -name $Datei -exec rm "{}" \;

Die Suchmöglichkeit I

Der Praxisalltag erweist sich häufig als Falle von einzelnen Problemstellungen. Manchmal kommt man nicht drum herum, nach einer bestimmten Datei zu suchen, welche eine bestimmte Zeichenkette aufweist. Es wäre nützlich, dies mal schnell auf der Kommandozeilen-Ebene  auszuführen. . Da diese Aufgabe wohl überall in einer anderen Variation vorkommt, haben wir uns entschieden, solch ein Shell-Skript hier zu schreiben. Das Skript verwendet das Shell-Tool "grep" als eleganten Lösungsweg. Hier nun das Skript im Detail:


Shell-Skript: "Das Skript such nach einer Datei mit einer bestimmten Zeichenkette"
#!/bin/sh
echo "Welche Zeichenkette suchen Sie?"
read zeichen
#Schleife
for file in *
do

if grep -q $zeichen $file
then
more $file
fi
done
exit 0

Zu Beginn soll der Anwender seine zu suchende Zeichenkette eingeben. Danach geht das Shell Skript durch die FOR-Schleife jede Datei im aktuellen Verzeichnis durch. Dabei sucht das Shell-Tool "grep" nach einer bestimmten Zeichenkette. Diese Zeichenkette kann als Parameter beim Aufruf übergeben werden. Sollte in der aktuellen Datei die Zeichenkette beinhaltet sein, wird dessen Dateiinhalt auf der Kommandozeile mittels des Kommandos more ausgegeben. Ist diese nicht enthalten, wird mit der nächsten Datei fortgefahren. Dies geht solange bis alle Dateien des aktuellen Verzeichnis durch sind. Durch die Option –i kann man angeben, daß die Groß- und Kleinschreibung ignoriert wird. Mittels der Option-l wird angewiesen, daß nur Zeilen ausgegeben werden, welche dem Suchmuster entsprechen.

 

Die Suchmöglichkeit II

 

Gerade im Praxisalltag kommt manchmal die Anforderung vor, dass innerhalb mehrerer Dateien die selbe Information abgeändert werden muß. Zum Beispiel kommt es nicht gerade selten vor, daß sich die Emailadresse von jemandem geändert hat und somit aktualisiert werden muß. Der Aufwand jede Datei per Hand abzuändern, wäre einfach viel zu zeitaufwendig. Also lassen wir ein Shell Skript diese Aufgabe für uns erledigen. Die Zeitersparnis ist dabei enorm! Dabei werden verschiedene Shell Kommandos so miteinander kombiniert, um diese Lösung zu erzielen. Hier das Skript im Detail:

Shell-Skript: "Das Skript durchsucht verschiedene Dateien und ersetzt ein bestimmtes Suchmuster"
!/bin/sh
#Jede Datei durchlaufen
for DATEI in $*; do

#Die Mailadresse ersetzen
sed -e 's/\(mailto:\).*\.de/\1mueller\@firma.de/g' $DATEI > $DATEI.bak

#Ist Kopie in Ordnung
if (grep 'mueller@firma.de' $DATEI.bak & > /dev/null); then

$Original überschreiben
mv $DATEI.bak $DATEI

#Die Erfolgsmeldung ausgeben
echo 'Ihre Mailanschrift wurde geändert!'

else
#Die Kopie löschen
rm $DATEI.bak

fi
done

Zu Beginn des Skripts wird jede Datei im aktuellen Verzeichnis durchgegangen. Mit dem Shell-Tool "sed" steht ein mächtiges Hilfsmittel zur Verfügung. Der Name "sed" steht für Stream-Editor. Dieses Tool übernimmt hier die Aufgabe jede Datei entsprechend zu editieren und dann auf der Standardausgabe anschließend zu kopieren. Was editiert werden soll, kann der Anwender als Option angeben. Per Schalter –e gibt läßt sich angeben, daß eine Zeichenkette durch eine andere ersetzt werden soll. Bei uns wird die alte Mail-Adresse durch eine neue Mail-Adresse ersetzt. Anschließend wird eine Sicherheitskopie dieser Datei angelegt. Dann wird durch das Shell-Tool "grep" noch geprüft, ob die Sicherheitskopie mit den Original identisch ist. Ist dies nicht der Fall, wird die Sicherheitskopie gelöscht. Andernfalls wird das Original von der Kopie überschrieben und eine Erfolgsmeldung am Terminal ausgegeben.

 

Die undankbare Prüfung

Nicht jedes Shell Skript funktioniert auf Anhieb. Dann gibt die Shell unweigerlich eine Fehlermeldung aus, in welcher Zeile der Fehler steckt. Um das Debugging des Kodes kommt man nicht herum. Da solche Shell Skripts generell klein gehalten sind, können diese ideal ausgetestet und korrigiert werden, bevor man diese ausliefert. Von der Shell werden dazu verschiedene Optionen für verschiedene Debugging-Methoden bereitgestellt. Per Option -n läßt sich angeben, daß die Syntaxfehler geprüft und dabei nichts ausgeführt wird. Über die Option -v läßt sich anweisen, daß jedes Kommando vor seiner Ausführung angezeigt wird. Somit läßt sich später ein Fehler leichter analysieren. Bei der Option -x werden die Kommandos erst nach der Ausführung angezeigt. In der Tabelle#3 sind die Optionen zusammengefaßt:

Tabelle#3: "Testen eines Shell Scripts"

Befehl:

Bedeutung:

sh -n myscript

Syntax-Test (die Kommandos werden gelesen und geprüft, aber nicht ausgeführt)

sh -v myscript

Ausgabe der Shell-Kommandos in der gelesenen Form

sh -x myscript

Ausgabe der Shell-Kommandos nach Durchführung aller Ersetzungen, also in der Form, wie sie ausgeführt werden

 

Schluß:

Zu Beginn scheint die Shell Programmierung auf den ersten Blick ziemlich kompliziert zu sein. Jedoch ist dies für Profis ein alter Hut. Sobald man seine ersten Shell Skripts schreibt, klärt sich das Bild schnell. Am besten orientiert man sich zuerst an Beispielen, um sich den Einstieg zu erleichtern. Im Internet findet man bestimmt genügend Anschauungsmaterial. Auf jeden Fall lassen sich viele Routineaufgaben, welche in der Praxis anfallen, mittels Shell Skripts elegant automatisieren.

 

Internet-Links:

Verschiedene freie Shell-Skript Ressourcen: www.shelldorado.com
Die umfangreiche Shell-Dokumentation: www.irb.cs.tu-berlin.de/leitfaden/sw-dokumente/unix
Verschiedene Shell-Skripts: www.chemie.fu-berlin.de/chemnet/general/topics/scripts_csh.html
Verschiedene kleinere Shell-Skripts: www.quie.de/shell.htm
Die Bash Syntax im Überblick: http://lugddlect.sourceforge.net/books/shell