Was ist ein (Shell-) Skript?

Linux Was ist ein (Shell-) Skript?

Also hier soll es darum gehen, was ein (Shell-) Script ist. Wir bieten ja einige kleine Scripte auf unserer Website an. Dieses Dokument ist für all diejenigen, die mit einem Script erstmal nicht viel anfangen können und nicht verstehen, was da passiert und wie man damit umgeht. Wir wollen hier allgemein von einem Script sprechen, weil es sich um einen sehr universellen Mechanismus handelt, um den es hier geht.

 

Mal angenommen, man tippt in seinen Compi ein paar Kommandos in ein xterm ein (Ja, es gibt immer noch Rechner bei denen man auch mit der Tastatur etwas anfangen kann.), um eine bestimmte Aufgabe zu erledigen. Dann stellt man eventuell nach einer Weile fest, dass man diese Aufgabe nicht nur einmal, sondern öfter, vielleicht sogar reglmäßig lösen muss. Ein Beispiel dafür wäre das erstellen einer Sicherheitskopie seiner Daten mit dem Packen eines TAR-Archives, Verschlüsseln und dem Brennen einer CD-Rom. Um sich nun die Tipparbeit zu sparen, schreibt man die Kommandos in eine Textdatei. Sie ist das Script, welches man dann ausführen möchte. Da es verschiedene Programme unter Linux gibt, die Benutzereingaben entgegen nehmen und verarbeiten, muss man am Anfang seines Scriptes festlegen, welches dieser Programme, also welche Shell, verwendet werden soll. Typische Vertreter sind:

 

/bin/ash
/bin/bash
/bin/csh
/bin/sh

Wenn man nur einfache Programme starten will, ist es erstmal weitgehend egal, welche dieser Shells man verwendet. Bei manchen Distributionen sind einige dieser Shells ein Link auf eine andere Shell, weil man nicht alle Shells beifügen wollte, da sie sich teilweise kaum unterscheiden. Angenommen wir wollen die bash verwenden, um das Programm "df" mit einem Parameter zu starten. Dann schreiben wir folgendes Script:

#!/bin/bash

df -h

Der obige Text wird einfach mit einem Editor in eine Textdatei geschrieben, die wir "FreierPlatz.sh" nennen wollen. Die Dateiendung macht leicht erkennbar, dass es sich in diesem Fall um ein Shell-Script handelt. Damit wir es wie ein Programm starten können, müssen wir es als ausführbar markieren:

chmod 755 FreierPlatz.sh

Dabei wird davon ausgegangen, dass wir uns in dem Verzeichnis befinden, in dem das Script liegt. Dann können wir es einfach mit

./FreierPlatz.sh

starten. Man sieht die Ausgabe des Programmes, welches in dem Script gestartet wurde. Nun haben wir in der ersten Zeile des Scriptes das Programm festgelegt, welches diese Datei verarbeiten soll. Dieses Programm interpretiert den Inhalt der Datei und führt entsprechende Aktionen aus. So kann man nicht nur Programme starten, sondern auch richtige Schleifen und Verzweigungen programmieren. Das hängt aber von dem verwendeten Programm ab, was die Befehle ja verstehen muss. Man nennt dieses Programm einen Interpreter (weil er ja die Datei interpretiert). Im obigen Fall haben wir ein Programm verwendet, welches man eben auch zur direkten Eingabe der Befehle als Shell verwendet.

Jetzt ist es auch kein weiter Weg mehr zu komplizierteren Programmiersprachen bzw. Scriptsprachen wie Perl, PHP, Ruby usw... Denn man muss ja nur in der ersten Zeile den gewünschten Interpreter angeben, der die Datei verarbeiten soll. Und davon gibt es einige. Wenn man jetzt auch noch die Dateiendung weglässt, dann kann der Anwender im ersten Moment nicht erkennen, ob es sich um ein Programm handelt, welches mit einem Übersetzer in die Maschinensprache übersetzt wurde, oder um ein Script. Unter Linux gibt es viele solcher Scripte, die die unterschiedlichsten Aufgaben übernehmen. Der grösste Vorteil von ihnen ist, dass Scripte leicht von einem Rechner zu einem anderen transportiert werden können und teilweise auch unter verschiedenen Betriebssystemen laufen.

Ein (Shell-) Script ist also nichts anderes als eine Textdatei, in der Anweisungen für ein Programm, den Interpreter (bzw. die Shell) stehen.

Artikelbewertung: 
No votes yet
War dieser Artikel hilfreich?