Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Titel<br />
Shell-<strong>Skripte</strong><br />
Bash-<strong>Skripte</strong> sind <strong>Programme</strong><br />
<strong>Programme</strong> in der Shell<br />
Hans-Georg Eßer<br />
Wer regelmäßig mit der Shell arbeitet, wird leicht zum Programmierer: Schreiben Sie mehrere<br />
Shell-Befehle in eine Textdatei <strong>und</strong> machen diese ausführbar, haben Sie schon Ihr erstes<br />
Shell-Skript entwickelt. Die Shell bietet als Programmiersprache aber noch viel mehr.<br />
Viele Shell-<strong>Skripte</strong> enthalten einfach<br />
nur diverse Befehle, die nacheinander<br />
laufen sollen. Ein Beispiel<br />
dafür ist das Skript in Listing 1: Rufen<br />
Sie es nach dem Anstöpseln einer Digitalkamera<br />
(oder dem Einstecken einer<br />
Speicherkarte) auf, erzeugt es automatisch<br />
einen neuen Unterordner mit einem<br />
Namen der Form 2013-06-30 <strong>und</strong> verschiebt<br />
alle Bilder von der Karte in diesen<br />
Ordner. Schauen wir uns das Listing Zeile<br />
für Zeile an:<br />
#!/bin/bash<br />
Die erste Zeile enthält gar keinen Befehl,<br />
sondern einen Kommentar; hinter #! steht<br />
der Pfad zur Shell (Bash), <strong>und</strong> damit sagen<br />
Sie dem System, dass die Bash das Skript<br />
ausführen soll. Diese Zeile sollten Sie an<br />
den Anfang jeder Skriptdatei stellen.<br />
CAMERA=/media/camera/DCIM/100XYZAB<br />
Die folgende Zeile definiert eine Variable<br />
CAMERA <strong>und</strong> weist ihr den Wert /media/<br />
camera/DCIM zu. Wenn Sie das Skript mit<br />
Ihrer eigenen Kamera ausprobieren möchten,<br />
müssen Sie diesen Pfad anpassen.<br />
Nach dem Anschließen der Kamera wird<br />
diese eingeb<strong>und</strong>en. Unterhalb von /media/<br />
finden Sie dann einen neuen Ordner,<br />
der meist eine Kurzbezeichnung Ihres Kameramodells<br />
oder der Herstellers als Namen<br />
trägt. Auf der obersten Ebene des Kameradateisystems<br />
gibt es einen Ordner<br />
DCIM, der ein weiteres Unterverzeichnis<br />
enthält – im Beispiel 100XYZAB; bei Ihnen<br />
wird es anders heißen. Setzen Sie den<br />
korrekten Pfad in der obigen Zeile ein,<br />
wenn Sie das Skript testen möchten.<br />
ZIEL=$HOME/Pictures/Import<br />
Ähnlich wie CAMERA den Ort speichert,<br />
in dem die Bilder auf der Kamera liegen,<br />
ist auch ZIEL eine Variable, in die Sie das<br />
Verzeichnis eintragen, in welches das<br />
Skript die Bilder kopieren soll. In diesem<br />
Beispiel gehen wir davon aus, dass es in<br />
Ihrem Home-Verzeichnis (das sich über<br />
$HOME ansprechen lässt) einen Ordner<br />
Pictures gibt – <strong>und</strong> darin einen Unterordner<br />
Import. Falls das nicht der Fall ist, ist<br />
es auch nicht tragisch, denn der übernächste<br />
Befehl wird diese Verzeichnisse<br />
erzeugen.<br />
DATE=$( date +%Y‐%m‐%d )<br />
Dieses Kommando ist komplexer. Schauen<br />
wir zunächst in die Klammern: Dort steht<br />
das Kommando date +%Y‐%m‐%d. Ohne<br />
Argumente gibt date das aktuelle Datum<br />
<strong>und</strong> die Uhrzeit aus. Mit den Angaben hinter<br />
dem Pluszeichen definieren Sie ein Format<br />
– %Y‐%m‐%d sorgt dafür, dass die<br />
Ausgabe im Format 2011-09-30 erfolgt.<br />
Würden Sie also in der Shell direkt date<br />
+%Y‐%m‐%d eingeben, würde das Tool<br />
das aktuelle Datum im Format 2011-09-30<br />
ausgeben. Die Konstruktion $( ... ) nimmt<br />
nun die Ausgabe dieses Befehls <strong>und</strong> macht<br />
daraus ein Argument. Am Anfang steht ja<br />
noch der Zuweisungsbefehl DATE=. Das<br />
gesamte Kommando schreibt also in die<br />
Variable DATE das aktuelle Datum.<br />
mkdir ‐p $ZIEL/$DATE<br />
Jetzt wird ein neuer Ordner erstellt – der<br />
Pfad setzt sich aus $ZIEL, dem Verzeichnistrenner<br />
/ <strong>und</strong> $DATE zusammen. Beachten<br />
Ivan Mikhaylov, 123RF<br />
48 www.easylinux.de<br />
<strong>EasyLinux</strong> 03/2013