Definition

BASH (Bourne Again Shell)

Bash (Bourne Again Shell) ist die freie und erweiterte Version der Bourne-Shell, die zu den Betriebssystemen Linux und GNU gehört. Bash ähnelt dem Original, verfügt aber über zusätzliche Funktionen wie die Bearbeitung von Befehlszeilen.

Bash verbessert die frühere Bourne-Shell (sh genannt), und enthält Funktionen der Korn-Shell und der C-Shell. Die Bash soll dem Shell-Standard entsprechen, der als Teil von IEEE POSIX spezifiziert ist. Ein für die Bourne-Shell geschriebenes Befehlsskript sollte in der Bash-Shell laufen.

Die Bash steht unter der GNU General Public License (GPL) und ist für die meisten Unix- und Linux-Versionen verfügbar. Es wurden auch Versionen für MS-DOS und Windows portiert.

Wie im Bash-Referenzhandbuch erläutert, ist der Name Bash ein Akronym für Bourne-again SHell, ein Wortspiel mit Stephen Bourne, dem Autor der Bourne-Shell. Bash ist eine Obermenge der früheren Shell und im Allgemeinen mit Bourne-Shell-Programmen kompatibel.

Was ist eine Shell?

In der Informatik ermöglicht ein Shell-Programm den Zugriff auf die Komponenten eines Betriebssystems. Die Shell bietet Benutzern (oder anderen Programmen) eine Möglichkeit, in das System einzudringen; die Shell definiert die Grenze zwischen innen und außen.

Es gibt zwei Arten von Betriebssystem-Shells:

  • Shells mit Befehlszeilenschnittstelle (CLI) wie die Bash bieten dem Benutzer eine prägnante und effiziente Möglichkeit, mit dem Betriebssystem zu interagieren, ohne den Overhead einer grafischen Benutzeroberfläche zu benötigen.
  • Shells mit grafischer Benutzeroberfläche (GUI), wie zum Beispiel Windows und macOS, gelten als hilfreiches Werkzeug für den Einstieg, bieten aber in der Regel auch Programme, die eine CLI-basierte Shell für Systemadministratoren oder andere Power-User emulieren, welche die Interaktion mit einer Eingabeaufforderung bevorzugen.

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

Wofür brauchen Sie Bash?

Bash ist wie andere CLIs für Szenarien geeignet, die Präzision bei der Arbeit mit Dateien und Daten erfordern, insbesondere wenn Sie eine große Anzahl von Dateien oder große Datenmengen durchsuchen, sortieren, manipulieren oder in irgendeiner Weise verarbeiten wollen.

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

  • Systemadministratoren setzen die Bash ein, um Systeme effizient und reproduzierbar zu verwalten. Sie verwenden die Bash zur Fehlersuche bei Systemen, die nicht wie gewünscht oder erwartet funktionieren, indem sie sich bei den Systemen anmelden und die Systemkonfigurationen und Netzwerkverbindungen überprüfen. Admins verlassen sich auf Bash-Skripte, um Software-Updates und Patches zu verteilen, laufende Systeme zu überwachen und Server zu aktualisieren und zu konfigurieren.
  • Softwareentwickler brauchen die Bash für verschiedene Entwicklungsaufgaben. Bash kann der Automatisierung von Softwareentwicklungsaufgaben wie Codekompilierung, Debugging von Quellcode, Änderungsverwaltung und Softwaretests dienen.
  • Netzwerktechniker verwenden Bash, um die Netzwerkleistung in Unternehmensnetzwerken zu testen, zu konfigurieren und zu optimieren.
  • Informatiker verwenden Bash zur Verwaltung von Forschungssystemen und zum Durchführen von Forschungsarbeiten an diesen Systemen.
  • Hobbyanwender und Power-User verwenden die Bash, um mit ihren Systemen zu interagieren, Programme auszuführen und ihre Systeme zu warten.

Die Bash wird in der Regel interaktiv eingesetzt, Sie können aber auch Shell-Skripte schreiben. Fast jede Computeraufgabe lässt sich mit einem Bash-Skript automatisieren. Anwender können die Skripte automatisch oder manuell anstoßen.

Wie funktioniert Bash?

Auf den ersten Blick scheint die Bash ein einfaches Befehls/Antwort-System zu sein, bei dem der Benutzer Befehle eingibt und die Bash die Ergebnisse zurückgibt. Die Bash ist jedoch auch eine Programmierplattform, und Benutzer können mit Shell-Befehlen in Shell-Skripten Programme schreiben, die Eingaben akzeptieren und Ausgaben erzeugen.

Einer der grundlegendsten Bash-Befehle, ls, hat nur eine Aufgabe: den Inhalt von Verzeichnissen aufzulisten. Der Befehl selbst listet nur die Namen von Dateien und Unterverzeichnissen im aktuellen Arbeitsverzeichnis auf.

Der Befehl ls verfügt über zahlreiche Parameter, die die Anzeige der Ergebnisse beeinflussen. Dazu gehören:

Ls-Befehlszeilenarguemente (Parameter)

Zweck

-l

Verwenden Sie ein längeres, detaillierteres Listenformat, um Dateiberechtigungen, Dateieigentümer, Gruppe, Größe und Datum/Uhrzeit der Erstellung aufzunehmen.

-a

Listen Sie alle Dateien und Unterverzeichnisse auf, auch solche, die normalerweise versteckt werden sollen.

-s

Zeigt die Größe jeder Datei an.

-h

Zeigen Sie Datei- und Unterverzeichnisgrößen in menschenlesbarem Format mit K, M, G und so weiter an, um Kilobyte, Megabyte und Gigabyte anzugeben.

-R

Rekursive Auflistung aller Dateien und Unterverzeichnisse im aktuellen Arbeitsverzeichnis.

Wenn Sie diese Parameter zusammen verwenden, erhalten Sie einen besseren Überblick darüber, welche Dateien und Unterverzeichnisse sich in einem Verzeichnis befinden, wann sie zuletzt geändert wurden und von wem.

Bash ermöglicht das Kombinieren von Befehlen, indem sie die Ausgabe eines Befehls über die Pipeline als Eingabe für einen anderen Befehl weitergibt. Mit diesem Befehl können Sie beispielsweise Dateien in einem Dateisystem auflisten, wobei der Parameter -R angibt, dass die Auflistung rekursiv sein soll:

user@hostname:/$ 1s -1ashR

Die Antwort auf diesen Befehl, vor allem wenn er aus dem Stammverzeichnis des Systems herausgegeben wird, enthält zu viele Einträge, als dass ein Mensch sie leicht analysieren könnte. In diesem Fall kann der Benutzer die Ausgabe des ls-Befehls über die Pipeline an den Bash-Befehl zum Abgleich von Textmustern, grep, weiterleiten.

Das Pipe-Symbol (vertikaler Balken oder |) leitet die Ausgabe der Verzeichnisliste an den grep-Befehl weiter, der nur Dateien und Unterverzeichnisse mit Dateinamen zurückgibt, die das angegebene Textmuster enthalten. Dieser Befehl:

user@hostname:/$ 1s -1ashR |grep 'Dateiname.txt'

gibt nur Dateien zurück, die die Zeichenkette Dateiname.txt enthalten, so dass dieser Befehl eine bestimmte Datei für Sie finden kann.

Einige Dinge, die interaktiv über die Bash-Befehlszeile viel einfacher zu erledigen sind, sind

  • Datei- und Verzeichnisverwaltung;
  • Überprüfen der Netzwerkkonfiguration;
  • Bearbeiten einer Konfigurationsdatei (oder einer beliebigen Textdatei); und
  • Anzeigen des Unterschieds zwischen zwei Dateien.

Zu den Arten von Bash-Befehlen gehören:

  • Einfache Befehle, die normalerweise allein oder mit Parametern und Variablen ausgeführt werden. Der Befehl ls zum Beispiel benötigt Parameter und Variablen für die aufzulistenden Verzeichnisse oder Dateien.
  • Pipes, die eine Ausgabe eines oder mehrerer Befehle als Eingabe für andere Befehle verwend
  • Listen, die es dem Benutzer ermöglichen, mehrere Befehle nacheinander auszuführen.
  • Zusammengesetzte Befehle, welche die Skriptprogrammierung ermöglichen und Schleifen (um einen Befehl eine bestimmte Anzahl von Malen zu wiederholen) und bedingte Konstrukte (um Befehle nur auszuführen, wenn eine bestimmte Bedingung erfüllt ist) umfassen.

Die Befehlszeilenbearbeitung ist eine besondere Funktion der Bash, die bei anderen CLIs nicht immer verfügbar ist. Die Bash speichert einen Befehlsverlauf, den Nutzer mit dem Drücken der Pfeiltaste nach oben aufrufen. Das macht es einfacher, einen Befehl genau zu wiederholen. Diese früheren Befehle können auch in der Befehlszeile geändert werden, indem man spezielle Tasten zum Kopieren, Einfügen, Löschen oder Ändern eines früheren Befehls verwendet.

Diese Definition wurde zuletzt im April 2022 aktualisiert

Erfahren Sie mehr über Serverbetriebssysteme