Shell-Skript
Was ist ein Shell-Skript?
Ein Shell-Skript ist eine Textdatei, die eine Abfolge von Befehlen für ein Unix-basiertes Betriebssystem (OS) enthält. Diese Textdatei enthält eine Abfolge von Befehlen, die von der Shell automatisch ausgeführt werden, anstatt sie manuell einzeln einzugeben. Die Shell ist die Befehlszeilenschnittstelle (CLI) des Betriebssystems und der Interpreter für die Befehle, die für die Kommunikation mit dem System verwendet werden.
Ein Shell-Skript wird in der Regel erstellt, um Zeit für Befehlsfolgen zu sparen, die ein Benutzer wiederholt verwenden muss. Wie andere Programme kann das Shell-Skript Parameter, Kommentare und Unterbefehle enthalten, denen die Shell folgen muss. Der Benutzer gibt einfach den Dateinamen in eine Befehlszeile ein, um die Befehlsfolge im Shell-Skript zu starten.
Im DOS-Betriebssystem wird ein Shell-Skript als Batch-Datei bezeichnet. In den Mainframe-VM-Betriebssystemen von IBM wird es EXEC genannt. Während Shell-Skripte typischerweise in Unix-basierten Systemen verwendet werden, erfüllen Batch-Dateien eine ähnliche Funktion unter Windows.
Wie Shell-Skripting funktioniert
Die grundlegenden Schritte bei der Erstellung von Shell-Skripten sind das Schreiben eines Shell-Skripts, das Zugänglichmachen des Skripts für die Shell und das Erteilen der Ausführungserlaubnis für die Shell.
Shell-Skripte enthalten ASCII-Text (American Standard Code for Information Interchange) und werden mit einem Texteditor, einer Textverarbeitung oder einer grafischen Benutzeroberfläche geschrieben. Der Inhalt des Skripts ist eine Reihe von Befehlen in einer Sprache, die von der Shell interpretiert werden kann. Zu den Funktionen, die Shell-Skripte unterstützen, gehören Schleifen, Variablen, if-then-else-Anweisungen, Arrays und Abkürzungen. Nach der Fertigstellung wird die Datei in der Regel mit einer .sh-Dateierweiterung und an einem Ort gespeichert, auf den die Shell zugreifen kann. Die Dateierweiterung ist aber nicht ausschlaggebend für ein erfolgreiches Ausführen, sondern die gegebenen Berechtigungen.

Befehlszeilen-Shell und grafische Shell im Vergleich
Die Hauptkategorien von Shells sind Befehlszeilen-Shells und grafische Shells. Eine Befehlszeilen-Shell ist eine textbasierte Shell, die es dem Benutzer ermöglicht, durch die Eingabe von Befehlen direkt in einem Betriebssystem zu programmieren. Sie verarbeitet die vom Benutzer eingegebenen Befehle und führt sie aus, wobei die Ausgabe direkt im Terminal erfolgt. Zu den üblichen Aufgaben, die über eine Befehlszeilen-Shell ausgeführt werden, gehören Datenmanipulation, Programmausführung und Systemüberwachung. Die Bash-Shell, die C-Shell und die Korn-Shell sind allesamt Befehlszeilen-Shells.
Die grafische Shell-Programmierung bietet eine visuelle Schnittstelle zur Interaktion mit einem Betriebssystem. Mit grafischen Shells interagieren die meisten Benutzer mit Windows, macOS und grafischen Linux-Betriebssystemen. Während grafische Shells einfach zu bedienen sind, fehlt ihnen oft die Präzision und Flexibilität, die Befehlszeilen-Shells bieten, insbesondere für fortgeschrittene Skripterstellung und Automatisierung.
Arten von Shells
Unter Unix und Linux gibt es fünf Hauptarten von Shell-Skripten:
- Bourne-Shell: Die Bourne-Shell, auch bekannt als sh, ist die ursprüngliche Unix-Shell, benannt nach dem Entwickler Stephen Bourne. Sie ist für ihre Einfachheit bekannt und wird auch heute noch für viele Skriptaufgaben und Skripttutorials verwendet. Das Zeichen für die Eingabeaufforderung einer Bourne-Shell ist $.
- Bourne-again-Shell: Die Bourne-again-Shell, auch Bash-Shell genannt, ist eine der beliebtesten Shell-Arten. Sie erweitert die Fähigkeiten der Bourne-Shell und wurde für GNU Linux entwickelt. Das Zeichen für die Eingabeaufforderung einer Bourne-again-Shell ist ebenfalls $.
- C-Shell: Eine C-Shell, auch bekannt als csh, wird in einem Textterminal-Fenster ausgeführt und ist in der Lage, Dateibefehle einfach zu lesen. Sie enthält eine C-ähnliche Syntax für Kontrollstrukturen und wird von Programmierern wegen ihrer Verlaufs- und Jobkontrollfunktionen bevorzugt. Das Zeichen für die Eingabeaufforderung einer C-Shell ist %.
- Korn-Shell: Die Korn-Shell, oder ksh, vereint Merkmale der Bourne- und C-Shells mit zusätzlichen Funktionen. Sie gilt als leistungsfähiger für die Skripterstellung, wobei die Kompatibilität mit sh gewahrt bleibt. Die Korn-Shell wird mit demselben Zeichen wie die beiden Bourne-Shells aufgerufen, dem $.
- Z-Shell: Z-Shells, oder zsh, sind für ihre verbesserte Tabulatorvervollständigung und Rechtschreibkorrektur bekannt. Sie bieten eine anpassbare Umgebung, die viele Benutzer anspricht, die erweiterte Funktionen gegenüber dem Standard-Bash-Skript suchen. Das Zeichen, mit dem Z-Shells aufgerufen werden, ist das gleiche wie bei der Bash-Shell.
Was ist ein Terminal?
Ein Terminal ist eine Anwendung, mit der Benutzer über eine Befehlszeile mit einer Shell interagieren können. In den Anfängen der Computertechnik waren Terminals physische Geräte, die an einen Großrechner angeschlossen waren. Heute sind Terminals in der Regel Softwareprogramme, die dieses Verhalten auf modernen Betriebssystemen emulieren.
Benutzer können Terminals verwenden, um Befehle einzugeben, die Programme ausführen, Dateien verwalten oder Shell-Skripte schreiben und ausführen. Terminals sind besonders nützlich für Benutzer, die eine textbasierte Kontrolle über ihr System bevorzugen oder benötigen, da sie eine direkte Verbindung zur zugrunde liegenden Shell bieten.
Beispiele für Shell-Skript-Anwendungen
Shell-Skripte sind besonders nützlich für sich wiederholende Aufgaben, deren Ausführung zeitaufwendig ist, wenn der Benutzer eine Zeile nach der anderen eingeben muss. Einige Beispiele für Anwendungen, bei denen Shell-Skripte zum Einsatz kommen, sind folgende:
- Automatisierung des Code-Kompilierungsprozesses
- Ausführung eines Programms oder Erstellung einer Programmumgebung
- Abschluss von Batch-Verarbeitungen
- Manipulation von Daten
- Verknüpfung bestehender Programme miteinander
- Ausführung von Routine-Backups
- Überwachung eines Systems
Vor- und Nachteile von Shell-Skripting
Shell-Skripte sollen einfach und effizient sein. Im Skript wird dieselbe Syntax verwendet wie in der Shell-Befehlszeile, so dass es keine Interpretationsprobleme gibt. Das Schreiben von Shell-Skripten ist auch schneller und erfordert weniger Lernaufwand als andere Programmiersprachen.
Allerdings können Fehler in einem Shell-Skript sehr kostspielig sein, wenn sie nicht korrigiert werden. Fehler sind oft auf Syntaxprobleme oder Nebenwirkungen zurückzuführen. Außerdem sind die verschiedenen Plattformen, die mit Shell-Skripten arbeiten, nicht immer kompatibel. Shell-Skripte können auch langsamer ausgeführt werden als einzelne Befehle. Bei Linux-Befehlen im Unternehmen besteht außerdem die Gefahr der Fragmentierung.