Ihr erstes Skript erstellen

LinuxBeginner
Jetzt üben

Einführung

Willkommen in der Welt der Automatisierung!

Stellen Sie sich vor, Sie sind Koch oder Köchin. Anstatt jedes Gericht jedes Mal auswendig und von Hand zuzubereiten, schreiben Sie ein Rezept auf. Das Küchenpersonal kann diesem Rezept folgen und das Gericht immer wieder perfekt zubereiten, ohne dass Sie jeden einzelnen Schritt überwachen müssen.

Unter Linux ist ein Skript Ihr Rezept. Es ist eine einfache Textdatei mit Befehlen, die die Shell der Reihe nach lesen und ausführen kann. Das ist eine der ältesten und wichtigsten Formen der Automatisierung in Unix- und Linux-Systemen.

Shell-Skripte wurden populär, weil Administratoren eine einfache Möglichkeit brauchten, sich wiederholende Aufgaben zu automatisieren – lange bevor moderne Werkzeuge für das Konfigurationsmanagement existierten. Auch heute verlassen sich viele Produktivsysteme für Einrichtung, Wartung und Fehlerbehebung auf kleine Shell-Skripte.

In diesem einführenden Lab schreiben Sie Ihr allererstes Rezept. Sie werden:

  1. Entwerfen: Die Skriptdatei erstellen.
  2. Schreiben: Die Anweisungen (Befehle) hinzufügen.
  3. Berechtigen: Der Datei die Ausführungsberechtigung geben.
  4. Ausführen: Ihr neues Programm starten.

Eine Skriptdatei erstellen

Zuerst benötigen wir ein leeres Blatt Papier, auf dem wir unser Rezept notieren können. Unter Linux ist ein Skript einfach eine Textdatei.

Linux schreibt keine Dateierweiterungen vor. Es ist jedoch eine hilfreiche Gewohnheit, Shell-Skripte mit .sh zu benennen. So erkennen Menschen schnell die Rolle der Datei, auch wenn Linux selbst stärker auf den Dateiinhalt und die Berechtigungen als auf die Dateierweiterung achtet.

Das ist ein wichtiger Unix-Grundsatz: Eine Datei wird normalerweise eher durch ihren Inhalt und ihre Berechtigungen als durch ihren Namen bestimmt. Ein Skript ist kein spezieller Dateityp, der von einem grafischen Assistenten erstellt wird. Es besteht lediglich aus Text, den ein Programm wie Bash Zeile für Zeile lesen kann.

Erstellen Sie in Ihrem Projektverzeichnis eine leere Datei mit dem Namen hello.sh.

Überprüfen Sie zunächst, ob Sie sich am richtigen Ort befinden:

pwd

Verwenden Sie nun den Befehl touch. Dieser Befehl entspricht digital dem Aufnehmen eines leeren Blatts Papier:

touch hello.sh

Prüfen Sie anschließend, ob die Datei vorhanden ist:

ls

Sie sollten hello.sh sehen.

Den Inhalt des Skripts schreiben

Jetzt müssen wir das eigentliche Rezept schreiben. Zuerst benötigen wir jedoch eine spezielle Kopfzeile.

Stellen Sie sich ein Skript wie einen Brief vor. Sie müssen ihn an die richtige Person adressieren. Unter Linux teilt die erste Zeile eines Skripts dem System mit, wer es lesen soll. Diese Zeile heißt Shebang (#!).

Die Bash-Shell soll unser Skript lesen. Deshalb adressieren wir es an /bin/bash. Außerdem fügen wir eine einfache Anweisung hinzu: echo. Dieser Befehl weist den Computer an, den angegebenen Text auszugeben.

Der Shebang ist eine der ältesten und praktischsten Unix-Konventionen. Wenn Sie ein Skript als Programm ausführen, liest das Betriebssystem die erste Zeile und entscheidet anhand dieser Zeile, welcher Interpreter die Datei verarbeiten soll. Ein Interpreter ist ein Programm, das Anweisungen liest und ausführt, anstatt direkt eine vorkompilierte Binärdatei zu starten.

Öffnen Sie die leere Datei mit dem Editor nano:

nano hello.sh

Geben Sie nun diese beiden Zeilen genau wie angegeben ein:

#!/bin/bash
echo "Hello LabEx"

Das bedeutet:

  • #!/bin/bash: Das „Adressetikett“. Es teilt Linux mit: „Übergebe diese Anweisungen an das Bash-Programm.“
  • echo "Hello LabEx": Die „Anweisung“. Sie weist Bash an, Hello LabEx auf dem Bildschirm auszugeben.

Ohne Shebang kann ein Skript in manchen Fällen trotzdem funktionieren, wenn Sie es ausdrücklich mit bash hello.sh starten, weil Sie den Interpreter dabei manuell auswählen. Wenn Sie es jedoch als ./hello.sh ausführen, ist der Shebang die übliche Methode, dem System mitzuteilen, welches Programm die Datei verarbeiten soll.

Speichern und beenden:

  1. Drücken Sie Ctrl + O, um zu speichern.
  2. Drücken Sie Enter, um zu bestätigen.
  3. Drücken Sie Ctrl + X, um den Editor zu beenden.

Überprüfen Sie Ihre Eingabe, indem Sie die Datei mit cat anzeigen:

cat hello.sh

Das Skript ausführbar machen

Sie haben ein Rezept geschrieben, aber im Moment ist es nur ein Blatt Papier. Linux verfolgt eine strenge Sicherheitsrichtlinie: Textdateien können nicht als Programme ausgeführt werden, solange Sie ihnen nicht ausdrücklich die entsprechende Berechtigung geben. So wird verhindert, dass Sie beispielsweise versehentlich Ihre Einkaufsliste als Code ausführen!

Wir müssen den „Schlüssel“ zur Ausführung umlegen. Der Befehl zum Ändern von Berechtigungen (Modi) lautet chmod. Die gewünschte Berechtigung ist +x (plus eXecute).

Der Dateiinhalt wird dadurch überhaupt nicht verändert. Geändert werden die Modus-Bits der Datei. Diese gehören zu den Metadaten, die Linux zu jeder Datei speichert. Anders gesagt: chmod +x macht das Skript nicht „skriptartiger“, sondern teilt dem System lediglich mit, dass diese Datei als Programm ausgeführt werden darf.

Geben Sie Ihrem Skript die Ausführungsberechtigung:

chmod +x hello.sh

Prüfen Sie anschließend erneut die Dateiinformationen:

ls -l hello.sh

Sehen Sie sich die Berechtigungen auf der linken Seite an. Dort sollte ein x erscheinen, beispielsweise in -rwxr-xr-x. Der Dateiname wird möglicherweise auch grün angezeigt. Das ist die Art des Terminals zu signalisieren: „Diese Datei kann ausgeführt werden.“

Das Skript ausführen

Jetzt wird es ernst. Führen wir das Rezept aus!

Um ein Skript auszuführen, das sich direkt in Ihrem aktuellen Verzeichnis befindet, müssen Sie den Pfad eindeutig angeben. Sie können nicht einfach hello.sh eingeben. Verwenden Sie stattdessen ./hello.sh.

  • . bedeutet „aktuelles Verzeichnis“.
  • / ist das Trennzeichen.

./hello.sh bedeutet also wörtlich: „Führe die Datei namens hello.sh aus, die sich in diesem Verzeichnis befindet.“

Das überrascht viele Anfängerinnen und Anfänger. Der Grund: Ihre Shell durchsucht normalerweise nur die in der Variablen PATH aufgeführten Verzeichnisse, wenn Sie lediglich einen Befehlsnamen eingeben. Aus Sicherheitsgründen wird das aktuelle Verzeichnis normalerweise nicht automatisch durchsucht. Deshalb ist ./ wichtig: Sie geben einen eindeutigen Pfad an, anstatt die Shell anzuweisen, den Befehl an anderer Stelle zu suchen.

Führen Sie Ihr Skript aus:

./hello.sh

Wenn alles funktioniert hat, sollte Ihr Computer Folgendes ausgeben:

Hello LabEx

Herzlichen Glückwunsch! Sie sind nicht mehr nur Linux-Anwenderin oder Linux-Anwender, sondern jetzt auch Linux-Programmierer beziehungsweise Linux-Programmiererin. Sie haben erfolgreich Ihr erstes Automatisierungsskript erstellt, mit Berechtigungen versehen und ausgeführt.

Zusammenfassung

Gut gemacht! Sie haben gerade eine wichtige neue Fähigkeit erworben.

Sehen wir uns den erlernten „Scripting-Workflow“ noch einmal an:

  1. Entwerfen: Erstellen Sie die Datei mit touch oder einem Editor.
  2. Programmieren: Fügen Sie die Kopfzeile #!/bin/bash und Ihre Befehle hinzu.
  3. Freischalten: Verwenden Sie chmod +x, damit Linux die Ausführung erlaubt.
  4. Ausführen: Starten Sie das Skript mit ./scriptname.sh.

Das mag wie ein kleiner Schritt wirken. Doch jede umfangreiche automatisierte Systemeinrichtung – von Webservern bis hin zu Supercomputern – beginnt mit einfachen Skripten wie diesem.