[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Um diese Übung auf unsere Arbeitsdiskette zu speichern, legen wir diese in das Disketten-Laufwerk, mounten das Laufwerk nach /a und wechseln in das Verzeichnis /a.
/# mount /dev/fd0 /a
/# cd /a
/a# _

Einfache Shell-Skripte

Die von Unix angebotenen Standardbefehle gehen weit über den z. B. von DOS angebotenen Umfang hinaus. Viele Aufgaben, für die unter DOS eigenständige Programme erforderlich sind, können hier problemlos durch einige Systembefehle erledigt werden. Dazu können die einzelnen Befehle in Skript-Dateien aufgenommen werden, die mit den Batch-Dateien von DOS vergleichbar sind. Aufgrund des erheblich größeren Sprachumfangs ist dabei aber eine wesentlich komfortablere Programmierung möglich. Gewissermaßen dienen die Unix-Befehle als Module für umfangreichere Anwendungen, die im Gegensatz zu DOS, daher nicht von Grund auf neu programmiert werden müssen. Zusätzlich lassen sich unter X-Windows diese Skripte sogar mit einer grafischen Oberfläche versehen.

In unseren ersten Einstieg werden wir keine umfangreichen Programme erstellen. Dafür lernen wir dir Möglichkeiten und Vorteile von Shell-Skripten kennen.

Eine Skript ist ein Text, der die Befehle enthält, die von der Shell bearbeitet werden sollen. Mit anderen Worten wir können in jede Zeile der Textdatei einen Unix-Befehl, wie z. B. ls oder date, schreiben. Diese werden dann (meist) nacheinander abgearbeitet.

Um unsere Skripte dauerhaft speichern zu können, sollte unsere Arbeitsdiskette nach /a gemountet sein. Wir erstellen ein Verzeichnis mit dem Namen bin für unsere Skript-Dateien:

/# cd /a
/a# mkdir bin
/a# cd bin
/a/bin# _

Arbeitsschritte zur Erstellung und Abarbeitung eines Shell-Skripts

  1. Schreiben der Unix-Befehle mit Hilfe eines Texteditors (z. B.  vi Dateiename ) in die Skript-Datei.
  2. Die Skript-Datei wird mit dem Befehl  chmod u+x Dateiename  ausführbar (engl. executable) gemacht.
  3. Aufruf der Skript-Datei:  ./Dateiename 

Wir wollen dies an einem kleinem Beispiel nachvollziehen. Zuerst soll von der Skript-Datei der Befehl zum Bildschirmlöschen clear und danach den schon bekannten Befehl df aufgerufen werden. Die Skript-Datei soll test heißen. Spezielle Vorschriften für die Namengebung von Skript-Dateien existieren übrigens nicht.

/a/bin# vi test

clear
df
~
~
~
~
~
~
~
~
~
"test" [New File] 2 lines, 9 chars

Wir speichern unsere Arbeit und verlassen den Texteditor vi:

[Esc] :wq

Jetzt kommt der zweite Schritt. Wir müssen unsere Datei ausführbar machen. Eine Kontrolle mit ls -l zeigt uns, daß die Datei noch nicht ausführbar ist.

/a/bin# chmod u+x test

Wir kontrollieren noch mal mit ls -l:

/a/bin# ls -l test
1 -rwxr--r--  1  root root  9 Nov 17 17:59 test

Das x zeigt uns, daß wir als Eigentümer bzw. Nutzer (engl. user) diese Datei ausführen können. Dies wollen wir auch gleich tun:

/a/bin# ./test
Angaben zur Speicherbelegung auf allen gemounteten Laufwerken

Der Punkt bezeichnet das aktuelle Verzeichnis. Wir können den Befehl auch so eingeben:

/a/bin# /a/bin/test
Angaben zur Speicherbelegung auf allen gemounteten Laufwerken

Modifizieren unseres Skripts

Wir wollen unseren Skript noch etwas modifizieren. Um nicht jedesmal den Editor vi neu aufrufen zu müssen, verwenden wir eine zweite Konsole:

[Alt] [F2]

Dort loggen wir uns auch mit root ein und starten den Texteditor vi:

login: root
/# cd /a/bin
/a/bin# vi test

So nun können wir auf Konsole 2 unser Skript editieren, speichern ([Esc] :w) und zur Konsole 1 ([Alt] [F1]) wechseln und das Skript aufrufen. Wir nutzen dafür wieder die Befehlswiederholung (Cursortaste nach oben). Zum Weiteren Editieren kehren wir zur Konsole 2 ([Alt] [F2]) zurück.

Kommentare

Zum besseren Verständnis sollten Kommentarzeilen in Skripte eingebaut werden. Diese werden mit den Zeichen Doppelkreuz # bzw. Doppelpunkt : eingeleitet. Vorsicht aber bei Shell-Skripte mit Kommentaren in der ersten Zeile. Mitunter werden diese als spezielle Befehle ausgewertet. Am besten man läßt die erste Zeile leer.

      Leerzeile
# Das ist eine Kommentarzeile!
clear
df
~
~
~
~
~
~
~
~

Ausgabe von Text

Mit dem Befehl echo kann Text ausgegeben werden.


# Das ist eine Kommentarzeile!
clear
echo "Angaben zur Speicherbelegung:"
df
~
~
~
~
~
~
~

echo ohne Parameter gibt eine Leerzeile aus. So können wir unser Skript noch etwas schöner gestalten.


# Das ist eine Kommentarzeile!
clear
echo
echo "Angaben zur Speicherbelegung:"
df
echo
~
~
~
~
~

Parameter

Es können auch Parameter an das Skript übergeben werden. Konkret können wollen wir Parameter an den Befehl df übergeben. Um alle Parameter aus der Befehlszeile zu übernehmen dienen die Zeichen $*


# Das ist eine Kommentarzeile!
clear
echo
echo "Angaben zur Speicherbelegung:"
df $*
echo
~
~
~
~
~

Jetzt können wir unser Skript mit Parametern aufrufen. Der Parameter /a zeigt nur die Speicherbelegung für den Mountpoint /a.

/a/bin# ./test /a

Die Parameter /a und /tmp zeigen nur die Speicherbelegung für diese Mountpoints.

/a/bin# ./test /a /tmp

Es können aber auch die entsprechenden Devices als Parameter übergeben werden.

/a/bin# ./test /dev/ram0 /dev/ram1

Übung

Erstelle ein Shell-Skript mit dem Namen formata. Dieses Skript soll das Formatieren von Disketten vereinfachen. Dazu müssen die Befehle fdformat und mkfs.ext2 verwendet werden.

Hinweis: Die Diskette darf zum Formatieren nicht gemountet sein! Bitte nicht die Arbeitsdiskette und die muLinux-Startdiskette formatieren. Eine Kopie des fehlerfreien Skripts sollte sich zum Schluß auf der Arbeitsdiskette befinden.

So, das war es erstmal mit den Shell-Skripten.

Um diese Übung zu beenden heben wir die mount-Zuordnung unserer Arbeitsdiskette auf.
/a# cd /
/# umount /a
/# _

[Zurück] [Home] [Weiter]