Ein Beispiel-Skript mit der Funktion ls -l
könnte folgendermaßen aussehen:
bash
#!/bin/bash
# Dieses Skript führt die 'ls -l' Funktion auf einem bestimmten Verzeichnis aus.
if [ $# -eq 0 ]
then
echo "Bitte geben Sie einen Verzeichnisnamen an."
else
echo "Inhalt des Verzeichnisses $1:"
ls -l $1
fi
Das Skript beginnt mit der Shebang-Zeile #!/bin/bash
, die den Interpreter für das Skript angibt. In diesem Fall ist es Bash.
Die if
-Anweisung prüft, ob das Skript mindestens ein Argument hat. Dafür wird der Parameter $#
verwendet, der die Anzahl der Argumente angibt. Wenn keine Argumente vorhanden sind, wird eine Fehlermeldung ausgegeben. Andernfalls wird die ls -l
Funktion auf das angegebene Verzeichnis angewendet.
Um das Skript ausführbar zu machen, muss es zunächst mit chmod +x scriptname.sh
markiert werden. Dann kann es mit ./scriptname.sh
ausgeführt werden, wobei scriptname.sh
durch den tatsächlichen Namen des Skripts ersetzt wird.
Toni Schlack hat für Sie nachfolgend ein paar Übungen erstellt.
Übung 1: Schreiben Sie ein Skript, das alle Dateien im aktuellen Verzeichnis mit einer Größe von mehr als 1 MB auflistet.
Lösung:
bash
#!/bin/bash
ls -lh | awk '{if ($5 > 1000000) print $9}'
Übung 2: Schreiben Sie ein Skript, das alle Dateien im aktuellen Verzeichnis mit einer Erweiterung von .txt auflistet.
Lösung:
bash
#!/bin/bash
ls -1 *txt
Übung 3: Schreiben Sie ein Skript, das alle leeren Dateien im aktuellen Verzeichnis auflistet.
Lösung:
bash
#!/bin/bash
find . -type f -empty
Übung 4: Schreiben Sie ein Skript, das alle Verzeichnisse im aktuellen Verzeichnis auflistet, die eine bestimmte Zeichenfolge im Namen enthalten.
Lösung:
bash
#!/bin/bash
ls -d *Zeichenfolge*
Übung 5: Schreiben Sie ein Skript, das alle ausführbaren Dateien im aktuellen Verzeichnis auflistet.
Lösung:
bash
#!/bin/bash
ls -l | grep "^-" | awk '{if ($1 ~ /x/) print $9}'