Einfache Shellscripte

Shellscripte sind einfache Textdateien, die Shellbefehle enthalten. Um sie auszuführen, müssen wir entweder die Datei ausführbar machen oder sie mit einer Shell aufrufen. Bevor wir Shellscripte erstellen, sollten wir etwas über Dateirechte in Linux wissen.

Dateirechte in Linux

Eine Datei bzw. ein Verzeichnis gehört in Linux einem Benutzer (user - u) bzw. einer Gruppe (group - g) von Benutzern. Außerdem gibt es noch die Kategorie „Andere“ (other - o), die alle Systembenutzer umfasst. Jede dieser Kategorien kann bezüglich einer Datei die folgenden Rechte haben.

r - read : Die Datei kann gelesen werden.

w - write : Die Datei kann geschrieben bzw. gelöscht werden.

x - execute : Die Datei kann ausgeführt werden.

Bei Verzeichnissen bedeutet x, dass man in das Verzeichnis wechseln darf.

Die Rechte einer Datei bzw. eines Verzeichnisses kann man sich mit den Befehl ls -l anzeigen lassen.

user@linux-sr:~$ ls -l ... drwxr-xr-x 2 user user 4096 Mär 18 07:43 Dokumente ... -rw-rw-r-- 1 user user 0 Mär 23 12:22 test.txt ...

Vor dem Verzeichnis Dokumente steht die Auflistung drwxr-xr-x. Das d bedeutet, dass es sich um ein Verzeichnis handelt. Dann folgen dreimal die Buchstaben rwx bzw. Striche. Das erste Tripel gilt für den den Besitzer, das zweite für die Gruppe, das dritte für alle sonstigen. Wenn der entsprechende Buchstabe steht, ist das recht gesetzt, wenn der Strich steht ist das Recht nicht gesetzt. Die Bezeichnung user user bedeutet, dass die Datei dem Nutzer user (erstes user) und der Gruppe user (zweites user) gehört.

Alle Nutzer, die Schreibrechte haben, können die Rechte einer Datei mit dem Befehl chmod ändern. Bei Shellscripten ist es notwendig, den Nutzer Ausführungsrechte für das Script zu geben. Dies kann man mit den folgenden Befehl machen:

user@linux-sr:~$ chmod u+x beispielscript.sh

Mit diesem Befehl erhält der Besitzer Ausführungsrechte für die Datei beispielscript.sh.

Eine ausführliche Darstellung des Befehls chmod findet man hier: https://www.shellbefehle.de/befehle/chmod/ .

Der Editor nano

Wenn man sich via Kommandozeile mit dem Befehl ssh in einen Linuxrechner einloggt, kann man keinen grafischen Editor benutzen. Hier bietet sich der recht einfach zu bedienende Editor nano an. Mit dem Befehl

user@linux-sr:~$ nano beispielscript.sh

kann man die Datei beispielscript.sh bearbeiten. Wenn die Datei nicht existiert, wird sie neu angelegt. Mit STRG-O kann man die Datei speichern, mit STRG-X kann man das Programm beenden.

Eine genauere Bedienungsanleitung von nano findet man hier:

https://www.raspberry-pi-geek.de/ausgaben/rpg/2018/06/einfuehrung-in-den-texteditor-nano/

Shellscripte Erstellen und Ausführen

Unser erstess Script

Unser script soll in der Datei beispielscript.sh stehen. Bei Shellscripten ist die Endung .sh üblich. Wir öffnen also die Datei mit nano:

user@linux-sr:~$ nano beispielscript.sh

Nun tragen wir alle Befehle in nano ein. Das Script soll ein Verzeichnis „beispielverzeichnis“ anlegen, es mit ls -l anzeigen und danach wieder löschen:

mkdir beispielverzeichnis ls -l rmdir beispielverzeichnis

Mit STRG-O und ENTER kann man die Datei jetzt speichern.

Jetzt müssen wir das Script ausführbar machen und danach können wir es ausführen. Es ist günstig eine weitere Shellsitzung zu öffnen, dann können wir den Editor geöffnet lassen.

Um dass Script ausführbar zu machen, geben wir das folgende ein:

user@linux-sr:~$ chmod u+x beispielscript.sh

Die müssen wir nur einmal tun. Jetzt können wir das Script ausführen:

user@linux-sr:~$ ./beispielscript.sh insgesamt 8 -rwxrw-r-- 1 user user 58 Mär 24 10:30 beispielscript.sh drwxrwxr-x 2 user user 4096 Mär 24 10:30 beispielverzeichnis

Das ./ vor dem Dateiname ist notwendig, damit das Script im Dateiname gefunden wird.

Shebang

Normalerweise werden Shellbefehle einfach ausgeführt. Wenn aber die Befehle in einer anderen Shell ausgeführt werden sollen (z.B. Bash-Befehle in einen Z-Shell) ist es sinnvoll, vor die Befehle eine sogenannten Shebang zu schreiben, der die richtige Shell startet. Für die Bash