Definition

Bash (Bourne Again Shell)

Was ist Bash (Bourne Again Shell)?

Bash (Bourne Again Shell) ist die kostenlose und erweiterte Version der Bourne-Shell, die mit Linux- und GNU-Betriebssystemen (OS) ausgeliefert wird. Bash ähnelt dem Original, verfügt jedoch über zusätzliche Funktionen, wie zum Beispiel die Bearbeitung der Kommandozeile.

Bash wurde entwickelt, um die frühere Bourne-Shell sh zu verbessern, und enthält Funktionen aus der Korn-Shell und der C-Shell. Bash soll dem Shell-Standard entsprechen, der als Teil des IEEE Portable Operating System Interface (POSIX) festgelegt ist. Ein für die Bourne-Shell geschriebenes Skript lässt sich auch in der Bash-Shell ausführen.

Bash wird unter der GNU General Public License (GNU GPL) veröffentlicht. Es ist für die meisten Versionen von Unix und Linux verfügbar, und Versionen wurden auf das Microsoft Disk Operating System (DOS) und Windows portiert.

Wie im Bash Reference Manual erklärt, ist der Name Bash eine Abkürzung für Bourne Again Shell, ein Wortspiel mit Stephen Bourne, dem Autor der Bourne-Shell. Bash ist eine Erweiterung der früheren Shell und im Allgemeinen mit Bourne-Shell-Programmen kompatibel.

Was ist eine Shell?

In der Informatik bietet ein Shell-Programm Zugriff auf die Komponenten eines Betriebssystems. Die Shell ermöglicht Benutzern oder anderen Programmen den Zugriff auf das System; sie definiert die Grenze zwischen innen und außen.

Es gibt zwei Arten von Betriebssystem-Shells:

  1. Shells mit Kommandozeile (CLI) wie Bash bieten Benutzern eine übersichtliche und effiziente Möglichkeit zur Interaktion mit dem Betriebssystem, ohne den Overhead einer grafischen Benutzeroberfläche (Graphic User Interface, GUI) zu erfordern.
  2. Shells mit grafischer Benutzeroberfläche, wie Windows und macOS, gelten als einfacher für Anfänger, bieten aber in der Regel auch Programme, die eine CLI-basierte Shell für Systemadministratoren oder andere Power-User emulieren, die lieber mit einer Befehlszeile arbeiten.

Bash ist die am häufigsten verwendete CLI-Shell für Unix-Betriebssysteme, einschließlich Linux.

Wofür wird Bash verwendet?

Bash wird wie andere Kommandozeilen beziehungsweise Befehlszeilenschnittstellen für alle Computeranwendungen verwendet, die Präzision bei der Arbeit mit Dateien und Daten erfordern, insbesondere wenn große Mengen an Dateien oder Daten gesucht, sortiert, bearbeitet oder in irgendeiner Weise verarbeitet werden müssen.

Einige der häufigsten Anwendungsfälle für Bash sind:

  • Systemadministratoren verwenden Bash, um Systeme systematisch und reproduzierbar zu verwalten. Systemadministratoren verwenden Bash, um Probleme mit Systemen zu beheben, die nicht wie gewünscht oder erwartet funktionieren, indem sie sich bei den Systemen anmelden und die Systemkonfigurationen und Netzwerkverbindungen überprüfen. Systemadministratoren verlassen sich auch auf Bash-Skripte, um Software-Updates und Patches zu verteilen, laufende Systeme zu überwachen und Systeme zu aktualisieren und zu konfigurieren.
  • Softwareentwickler verlassen sich bei vielen Entwicklungsaufgaben auf Bash. Bash kann zur Automatisierung von Softwareentwicklungsaufgaben wie Code-Kompilierung, Debugging und Softwaretests verwendet werden.
  • Netzwerkadministratoren verwenden Bash zum Testen, Konfigurieren und Optimieren von Unternehmensnetzwerken.
  • Informatikforscher verwenden Bash zur Verwaltung von Forschungssystemen und zur Durchführung von Forschungsarbeiten auf diesen Systemen.
  • Hobby- und Power-User verwenden Bash zur Interaktion mit ihren Systemen, zur Ausführung von Programmen und zur Wartung ihrer Systeme.

Bash wird in der Regel interaktiv verwendet, kann aber auch zum Schreiben von Shell-Skripten verwendet werden. Nahezu jede Computeraufgabe kann mit einem Bash-Skript automatisiert werden. Bash-Skripte können bei Bedarf oder regelmäßig ausgeführt werden.

Wie funktioniert Bash?

Auf den ersten Blick scheint Bash ein einfaches Befehls-/Antwortsystem zu sein, bei dem Benutzer Befehle eingeben und Bash nach Ausführung dieser Befehle die Ergebnisse zurückgibt. Bash ist jedoch auch eine Programmierplattform, auf der Benutzer Programme schreiben können, die Eingaben akzeptieren und mithilfe von Shell-Befehlen in Shell-Skripten Ausgaben erzeugen. Zu den Bash-Befehlstypen gehören:

  • Einfache Befehle, die in der Regel allein oder mit Parametern und Variablen ausgeführt werden.
  • Pipes, die verwendet werden, um die Ausgabe eines oder mehrerer Befehle als Eingabe für andere Befehle zu verknüpfen.
  • Listen, mit denen Benutzer mehrere Befehle nacheinander ausführen können.
  • Zusammengesetzte Befehle, die die Skriptprogrammierung ermöglichen und Schleifen zum Wiederholen eines Befehls für eine bestimmte Anzahl von Malen sowie bedingte Konstrukte zum Ausführen von Befehlen nur bei Erfüllung einer bestimmten Bedingung enthalten.

Einer der grundlegendsten Bash-Befehle, ls, hat nur eine Aufgabe: den Inhalt eines Verzeichnisses aufzulisten. Dieser Befehl listet allein die Namen der Dateien und Unterverzeichnisse im aktuellen Arbeitsverzeichnis auf.

Bash-Befehl ls Screenshot
Abbildung 1: Der Bash-Befehle ls listet den Inhalt des aktuellen Arbeitsverzeichnisses auf.

Der Befehl ls verfügt über zahlreiche Parameter, mit denen die Anzeige der Ergebnisse geändert werden kann. Abbildung 2 zeigt einige häufig verwendete Parameter für den Befehl ls.

Abbildung 2: Häufig verwendete Parameter für den Befehl ls.
Abbildung 2: Häufig verwendete Parameter für den Befehl ls.

Zusammen geben diese Parameter dem Benutzer einen viel klareren Überblick darüber, welche Dateien und Unterverzeichnisse sich in einem Verzeichnis befinden, wann sie zuletzt geändert wurden und von wem.

Befehl ls mit dem Parameter /$ Screenshot
Abbildung 3: Der Befehl ls in Kombination mit einem Parameter liefert detailliertere Informationen über den Inhalt eines Arbeitsverzeichnisses.

Bash ermöglicht die Kombination von Befehlen, indem die Ausgabe eines Befehls als Eingabe für einen anderen Befehl verwendet wird. Mit dem folgenden Befehl können beispielsweise alle Dateien in einem Dateisystem aufgelistet werden, wobei der Parameter -R angibt, dass die Auflistung rekursiv erfolgen soll.

user@hostname:/$ 1s -1ashR

Die Antwort auf diesen Befehl enthält, insbesondere wenn er aus dem Stammverzeichnis des Systems ausgegeben wird, zu viele Einträge, als dass sie von Menschen leicht analysiert werden könnten. Hier kommen Pipes ins Spiel: In diesem Fall kann der Benutzer die Ausgabe des Befehls ls an den Bash-Befehl grep weiterleiten, der Textmuster vergleicht.

Das Pipe-Symbol – ein senkrechter Strich (|) – leitet die Ausgabe aus der Verzeichnisliste an den Befehl grep weiter, sodass nur Dateien und Unterverzeichnisse mit Dateinamen zurückgegeben werden, die das angegebene Textmuster enthalten. Dieser Befehl gibt nur Dateien zurück, die die Zeichenfolge filename.txt enthalten, sodass dieser Befehl zum Auffinden einer bestimmten Datei verwendet werden kann.

user@hostname:/$ 1s -1ashR |grep ‚filename.txt‘

Weitere gängige Bash-Befehle sind die folgenden:

  • date: zeigt das aktuelle Datum an
  • touch: erstellt eine neue Datei
  • pwd: zeigt das aktuelle Arbeitsverzeichnis an
  • echo: gibt eine Textzeichenfolge oder einen Variablenwert auf dem Terminal aus
  • man: öffnet das Befehlshandbuch
  • which: zeigt den Bash-Shell-Pfad an
  • df: zeigt den verfügbaren Speicherplatz an
  • cp: kopiert eine Datei oder ein Verzeichnis
  • chmod: ändert die Berechtigungen für eine Datei oder ein Verzeichnis

Was sind die Vorteile von Bash?

Bash ist eine Open-Source-Anwendung, die jeder für eine Vielzahl von systembezogenen Aufgaben, einschließlich der Automatisierung, verwenden kann. Sie bietet eine einfache Syntax, die die Verwendung erleichtert. Außerdem verfügt sie über mehrere komfortable Funktionen, die die Verwendung weiter vereinfachen. Dieselben Funktionen können jedoch auch Kompatibilitätsprobleme auf Systemen verursachen, auf denen Bash nicht ausgeführt wird.

Die Bearbeitung der Kommandozeile ist eine spezielle Funktion von Bash, die in anderen CLIs nicht immer verfügbar ist. Bash speichert eine Befehlshistorie, auf die Sie mit der Aufwärtspfeiltaste zugreifen können. Dies erleichtert die präzise Wiederholung eines Befehls. Diese vorherigen Befehle können auch in der Kommandozeile mit speziellen Tasten zum Kopieren, Einfügen, Löschen oder Ändern eines vorherigen Befehls geändert werden.

Was ist Bash-Skripting?

Da Bash als skriptfähige Shell und Programmiersprache dient, können Benutzer Bash-Befehle in einer Textdatei skripten und dann in Bash ausführen. Das System führt die Datei automatisch aus, sodass der Benutzer die Befehle nicht manuell an der Bash-Eingabeaufforderung eingeben und ausführen muss. Bash-Skripte bieten eine Möglichkeit, viele sich wiederholende Aufgaben zu automatisieren, wie zum Beispiel:

  • Logdateien bereinigen
  • Daten sichern
  • temporäre Dateien in bestimmte Verzeichnisse konvertieren
  • Ordner erstellen
  • navigieren zu einem bestimmten Verzeichnis
  • ausführen eines bestimmten Prozesses
  • verwalten von Systemressourcen

Vorteile von Bash-Skripten

Nahezu jede Routineaufgabe in Unix- und Linux-Systemen kann mit Bash geskriptet werden, was viele verschiedene Arten der Automatisierung ermöglicht und Benutzern Zeit und Aufwand spart. Bash-Skripte können auch auf Windows- und macOS-Systemen ausgeführt werden, um sich wiederholende Aufgaben mithilfe von Emulatoren oder virtuellen Maschinen zu automatisieren.

Bash ist jedoch nicht auf einfache Automatisierungen beschränkt. Benutzer können auch komplexe Automatisierungsaufgaben einrichten, indem sie Bash-Skripte in Datenbanken, Webserver und andere Tools und Anwendungen integrieren.

Bash-Skripte minimieren außerdem das Fehlerpotenzial, da für die Ausführung einer Aufgabe nur wenig menschlicher Aufwand erforderlich ist. Solange das Skript keine Fehler enthält, führt Bash es aus und gibt die erwarteten Ergebnisse zurück.

Bash-Skripte sind einfach zu schreiben und zu bearbeiten. Für beide Zwecke kann ein einfacher Texteditor verwendet werden. Sie sind auch leicht zu debuggen. Durch Setzen der Option -x am Anfang des Skripts wird der Debugging-Modus aktiviert, sodass Benutzer Fehler im Skript identifizieren können. Die Skripte können auch an spezifische Anforderungen angepasst werden. Benutzer können Bash-Skripte auch mit anderen Dienstprogrammen kombinieren, um leistungsfähigere Skripte zu erstellen.

Erste Schritte mit Bash-Skripten

Der Ausgangspunkt für Bash-Skripting ist immer die Kommandozeile. Sie sieht wie folgt aus.

[username@Host ~]$

Benutzer können nach dem $-Zeichen einen beliebigen Befehl eingeben. Die folgende Syntax ist zu verwenden.

command [OPTIONS] arguments

Bash-Skripte enden in der Regel mit der Erweiterung .sh. Die Erweiterung ist jedoch nicht zwingend erforderlich, und Skripte können auch ohne sie ausgeführt werden.

Die erste Zeile jedes Bash-Skripts enthält immer eine Kombination aus # und !, gefolgt vom Bash-Shell-Pfad. Diese Kombination wird als shebang bezeichnet und gibt den absoluten Pfad zum Bash-Interpreter an.

Die folgenden Zeilen im Skript können Folgendes enthalten:

  • Befehle
  • gültige Pfade
  • Variablen

Beim Erstellen eines Bash-Skripts, das Variablen enthält, müssen Benutzer die Standard-Namenskonventionen befolgen. Beispielsweise dürfen Variablennamen keine Leerzeichen enthalten und müssen immer mit einem Buchstaben oder einem Unterstrich beginnen.

Das Skript ist nur ausführbar, wenn dem Benutzer Ausführungsrechte zugewiesen wurden – sofern er diese nicht bereits hat. Diese Zuweisung kann mit dem folgenden Befehl vorgenommen werden.

chmod u+x run_all.sh

Wie viele andere Sprachen auch, ermöglicht Bash Benutzern das Einfügen von Kommentaren in Skripte, beispielsweise um ihre Aktionen zu dokumentieren oder anderen Benutzern das Verständnis des Codes zu erleichtern. In Bash beginnen alle Kommentare mit einem # und werden vom Bash-Interpreter bei der Ausführung ignoriert.

Erfahren Sie mehr über Serverbetriebssysteme