Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
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 sieht der Shebang so aus:
#!/bin/bash
Somit sieht unser vollständiges Script beispielscript.sh
so aus:
- beispielscript.sh
#!/bin/bash