Inhaltsverzeichnis
!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!
Diese Seite wurde zuletzt am 9. Juli 2014 um 10:41 Uhr geändert.
Sonderzeichen
Gib folgenden Text per echo aus: „!'\ $(“'„)
Erzeuge folgende Dateien per „touch“: *.c, *.h und x.c
Lösche alle drei Dateien wieder, aber mit nur einem einzigen „rm“-Befehl!
Umleitungen
alle Zeilen aus /etc/services ausgeben, die „ftp“ (grep), aber nicht „udp“ (grep -v) enthalten
(in zwei Schritten mit „Speicherung“ des Zwischenergebnisses in einer Datei!)
Geschweifte Klammern
mittels geschweifter Klammern eine Sicherheitskopie von ~/.bashrc erstellen
mit einem einzigen Befehl (geschweifte Klammern) 625 Verzeichnisse in tmp erzeugen
Prozesse kombinieren
alle Zeilen aus /etc/services ausgeben, die „ftp“, aber nicht „udp“ enthalten (unter Verwendung einer Pipe!)
vereinfache folgenden Befehl: cat < /etc/passwd | sort
Wieviele Verzeichnisse hat Dein System (unter Verwendung von find und wc als root)?
erstelle mit einer Befehlszeile (touch und date) eine datei in /tmp, welche das aktuelle datum enthält (z. B. /tmp/test_20080808.dat).
Erkläre folgende Befehle (welche sind sinnvoll?):
wc -l /sbin/lsmod wc -l </sbin/lsmod wc -l $(/sbin/lsmod) wc -l <(/sbin/lsmod) wc -l |/sbin/lsmod
Shellskript
Schreib ein Shellskript (countdown.sh), welches im Sekundentakt von 3 runterzählt und folgendes ausgibt:
3... 2... 1... Start!
Echo
Erzeuge das Skript aus der vorhergehenden Aufgabe mit einem einzigen echo-Befehl!
Here-doc
Erzeuge das Skript aus der vorvorigen Aufgabe mittels „here-document“!
Parameter
Schreib ein Shellskript, dem man als Parameter einen Loginnamen übergibt, und welches
- sagt, was es gleich machen wird
 - einen Benutzer mit dem <Loginnamen> anlegt
 - ein Verzeichnis /tmp/<Loginname> anlegt und <Loginname> übereignet
 
Variablenumformung
Schreib ein Shellskript, welches die Kernelversion (z. B. 2.6.26) ausgibt.
Tipp: uname -r + Kommandoerzetzung + Variablenumformung
Untersuche folgendes Shellprogramm…
- Was will uns der Autor damit sagen?
 - Finde die drei Fehler!
 
 LANG ======
 UPTIME=$(uptime)
 UPTIME=$(UPTIME#*: )
 EINS=${UPTIME%,*}
 UPTIME=${UPTIME%,*}
 FUENF=${UPTIME%,*}
 FUENFZEHN=${UPTIME#* }
 echo "Letzte Minute: $EINS Prozesse im Durchschnitt"
 echo "... 5 min: $FUENF Prozesse im Durchschnitt"
 echo "... 15 min: $FUENFZEHN Prozesse im Durchschnitt"
Test
Schreib ein Shellskript gemäß folgender Anforderungen:
- Parameter 1: Dateiname für ein tar.gz-Archiv
 - Parameter 2: Quellverzeichnis
 - Die Anzahl der Parameter muss exakt zwei sein
 - Die Datei darf noch nicht existieren
 - Das Zielverzeichnis, in welchem das Archiv abgelegt werden soll, muss existieren und ein Verzeichnis sein
 - Der Benutzer muss Lese-, Ausführrechte und im Quellverzeichnis haben
 - Das Archivieren muss erfolgreich ablaufen
 - Ausgabe von Fehlermeldungen
 - Verwende für 3., 4., 6. und 7. && oder || anstatt von if … then
 
For
Benenne alle Dateien, die auf .tgz enden mit einer for-Schleife nach .tar.gz um!
