Lehrauftrag Informatik für Elektrotechnik und Maschinenbau
Übungsblatt 3 - Shell-Scripts
Die Aufgaben sind praktisch auf Unix/Linux zu lösen.
1. Aufgabe Probieren ist die Grundlage des Studierens ;-)
Bearbeiten Sie das Infoblatt Info4, indem Sie vor
Allem die Beispiele ausprobieren.
Ziehen Sie gegebenenfalls die Hilfemöglichkeiten
("man befehl" für zeilenorientiere Ausgabe des Manuals oder die KDE/SuSe-Hilfe
für grafikorientierte Ausgabe) hinzu.
2. Aufgabe userinfo
Schreiben Sie ein Script userinfo,
das zunächst prüft, ob ein (im Parameter angegebener) User auf
der Anlage als User registriert ist und dann die in der passwd-Datei verfügbaren
Informationen über diesen User ausgibt.
Hinweise:
-Die
Userliste der Unix-Systeme erhalten Sie mit ypcat passwd (erstes
Feld bis zum ?:?).
-Heraussuchen
eines Strings aus einer Datei wird mit dem Kommando grep
erledigt
(grep String <Datei)!
Nach dem Aufruf des grep-Kommandos steht auf der Sondervariablen $?
eine Null (0), wenn das Muster gefunden wurde!
-Teile
einer Zeile erhalten Sie mittels cut (-c1-10 für die
ersten 10 Spalten; -f3 für das 3. Feld beim Trennzeichen -d?:?).
-Sie
dürfen die Pipe verwenden!
3. Aufgabe userinfo1
Legen Sie eine zweite Variante
des userinfo-Scripts an. In diesem Script soll der Name des Users optionaler
Parameter sein, d.h. wenn der Username beim Aufruf nicht mitgegeben wurde,
muss er beim Ablauf des Scripts eingelesen werden. Darüber hinaus
soll jetzt zusätzlich angegeben werden, wie viel Speicherplatz der
User im Homedirectory belegt hat.
4. Aufgabe mymove
Schreiben Sie ein Script mymove, das
nur einen (erforderlichen) Parameter hat.
Es leistet folgendes:
·
Ohne Parameter aufgerufen teilt es mit, wie es korrekt aufzurufen ist.
·
Mit einem Parameter aufgerufen prüft es zunächst, ob die entsprechende
Datei existiert und gelesen werden darf.
·
Wenn ja, wird nachgefragt, wohin die Datei gemoved werden soll (?read?);
wenn nein: Abbruch mit Meldung.
·
Vor dem eigentlichen Moven soll noch geprüft werden, ob das Ziel schon
existiert.
·
Ist das der Fall, wird nachgefragt, ob die existierende Datei gelöscht
werden darf; ist es nicht der Fall, kann ja ohne Probleme gemoved werden.
5. Aufgabe mygrep
Schreiben Sie ein Script mygrep, das
zwei Parameter hat (sonst übliche Fehlermeldung). Der erste Parameter
stellt einen Suchstring dar, der zweite Parameter stellt den Dateinamen
dar.
Das
mygrep soll jeweils für die
übergebene Datei zunächst prüfen, ob sie lesbar ist.
Dann soll eine Überschriftszeile ausgegeben werden, die den Namen
der Datei enthält.
Dann soll der Suchstring mittels
grep in der Datei gesucht
werden.
Schließlich soll danach, wenn der Suchstring nicht gefunden wurde,
eine entsprechende Bemerkung ausgegeben werden. Dies entfällt, wenn
der Suchstring gefunden wurde (denn dann gibt
grep ja den
Text aus).
6. Aufgabe Telefonverzeichnis eines/einer Studierenden
Schreiben Sie die notwendigen drei Scripts für
die Verwaltung eines Telefonverzeichnisses.
Es sollen möglich sein:
·
Adressliste komplett ausgeben
·
Adresse eintragen (inkl. Prüfen, ob schon der gleiche Name vorhanden
ist)
·
Zu einer Person die Telefonnummer suchen.
Nebenbedingung:
Die Adress- und Telefonnummern-Einträge in der
Datei verz.tel sollen das (an /etc/passwd angelehnte) folgende Format haben:
Name:Vorname:Ort:(Vorwahl)
Telefonnummer
7. Aufgabe Schleifen
Kopieren Sie die Scripts userinfo, userinfo1 und
mygrep in jeweils neue Dateien ui, ui1 und mg.
Schreiben Sie diese Dateien dann um, so dass die
Scripts jeweils mehrere Parameter verarbeiten können.
Wichtiger Hinweis:
Die Abarbeitung mehrerer Parameter erfolgt durch Verarbeitung
des jeweils ersten Parameters. Anschließend wird dieser Parameter
mittels des shift-Kommandos eliminiert.
Das shift-Kommando rückt alle Parameter $n auf
den Platz von $n-1, $1 verschwindet, $# wird um eins verringert.
Beispiel:
vor dem shift: $1=a $2=b $3=c $#=3
dann shift.
nach dem shift: $1=b $2=c $#=2