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!