Bash ist ein leistungsstarkes Tool für jeden Linux-Benutzer oder Systemadministrator und ermöglicht die Automatisierung sich wiederholender Prozesse.

Bash wurde 1989 von Brian FoxFree als "Freie Software" entwickelt und ersetzte SH (Bourne-Shell) als Interpreter, der für die Verarbeitung von Befehlen auf der Befehlszeile des UNIX-Systems verantwortlich ist. wurde veröffentlicht. Dein Name Bourne Again Shell deine Worte aus der Abkürzung der Anfangsbuchstaben.

Bash wird häufig von Entwicklern, Datenwissenschaftlern, Systemadministratoren, Netzwerkingenieuren verwendet, kurz gesagt von allen, die bei ihrer täglichen Arbeit ein UNIX-Betriebssystem verwenden. Im Allgemeinen bieten Bash-Skripte Benutzerkomfort, indem sie die Arbeit automatisieren, die wiederholt ausgeführt werden muss. Heute ist Bash nicht nur auf UNIX-Systemen; Es wird auch in Betriebssystemen wie Windows, Mac OS und Android verwendet. Bash wird normalerweise in einem Textfenster ausgeführt, in dem Benutzer Befehle eingeben können, damit sie Operationen ausführen können.

Grundsätzlich ist Bash-Skript eine einfache Textdatei mit einer Reihe von Befehlen. Diese Befehle würden wir normalerweise in die Befehlszeile eingeben. Ihre Befehle (z.B ls veya cp Es ist eine Mischung aus Befehlen, die wir in die Befehlszeile eingeben können, aber normalerweise nicht tun. Zusamenfassend

Alles, was Sie normalerweise auf der Befehlszeile ausführen können, kann in eine Bash-Skriptdatei eingefügt werden und macht genau dasselbe wie auf der Befehlszeile. Ebenso kann alles, was Sie in eine Bash-Skriptdatei einfügen können, normal auf der Befehlszeile ausgeführt werden und genau die gleiche Aufgabe wie in einer Bash-Skriptdatei ausführen.

Sie müssen nichts ändern. Geben Sie Befehle wie gewohnt in das Bash-Skript ein, und Sie erhalten Ergebnisse wie auf der Befehlszeile. Anstatt sie in die Befehlszeile einzugeben, geben wir sie jetzt in eine einfache Textdatei ein, um die Dinge zu beschleunigen und ihre Wiederholung sicherzustellen. In diesem Sinne, wenn Sie wissen, wie man Dinge auf der Befehlszeile macht, dann haben Sie bereits einige Kenntnisse über Bash-Skripting.

Bash-Skriptdateien .sh Erweiterung ist "traditionell". Wie Sie wissen, ist Linux ein Betriebssystem, das unabhängig von Dateierweiterungen funktioniert. Damit eine von Ihnen geschriebene Bash-Skriptdatei funktioniert, müssen Sie daher .sh Verlängerung ist nicht erforderlich.

Wie funktioniert das Bash-Skript?

Zu wissen, wie es funktioniert, ist für das Schreiben von Bash-Skripten nicht unbedingt erforderlich. Wenn Sie anfangen, komplexere Bash-Skripte zu schreiben (wie Bash-Skriptdateien, die andere Skriptdateien aufrufen und mit der Ausgabe dieser Dateien arbeiten), ist es hilfreich zu wissen, wie es funktioniert.

Ein Programm ist ein binärer Datenblock, der aus einer Reihe von Anweisungen für die CPU und möglicherweise anderen Ressourcen (Bild, Ton oder eine beliebige Datei) besteht, in einem Paket organisiert und auf Ihrer Festplatte gespeichert ist. Wenn wir sagen, dass wir ein Programm durchführen, tun wir tatsächlich Folgendes: Dies dient dazu, Anweisungen und Ressourcen von der Festplatte in den Arbeitsspeicher (oder RAM) zu kopieren. Gleichzeitig weisen wir RAM zu, um die Befehle und Variablen dieses Prozesses zu speichern, und wir erstellen mehrere „Flags“, damit das Betriebssystem den Prozess während dieses Prozesses ausführt und beobachtet.

Kurz gesagt, jeder Prozess ist eine laufende Instanz eines Programms.

Es können mehrere Prozesse im Speicher vorhanden sein, die dasselbe Programm darstellen, das gleichzeitig ausgeführt wird. Sie können beispielsweise zwei Terminals und in beiden öffnen cp Wir können den Befehl ausführen. In diesem Fall das bestehende System zwei cp verarbeiten wird. Nachdem es das System gebootet hat, zerstört es sie und nicht mehr cp es gibt keinen Prozess, der das Programm darstellt.

Im Hintergrund läuft ein Bash-Prozess für die Bash-Shell, der uns begrüßt, wenn wir uns auf dem Terminal befinden. Wenn wir das Bash-Skript ausführen, wird dieser Prozess nicht ausgeführt, stattdessen wird ein neuer Bash-Prozess gestartet, der darin ausgeführt wird.

Wie führen wir es aus?

Wenn Sie ein Terminal haben, ist es ziemlich einfach, das Bash-Skript auszuführen. Das erste, was Sie tun müssen, bevor Sie das Bash-Skript ausführen, ist zu überprüfen, ob es die Ausführungsberechtigung hat. Aus Sicherheitsgründen ist die Ausführungsberechtigung normalerweise nicht standardmäßig festgelegt. Wenn Sie vergessen, diese Berechtigung vor dem Ausführen des Skripts zu erteilen, erhalten Sie eine Fehlermeldung mit folgendem Hinweis. Dies verursacht kein Problem und verhindert, dass Ihr Programm ausgeführt wird.

bahdem@bahdems ~ % ./topluluk.sh bash: Erlaubnis verweigert: ./topluluk.sh

Wir können dieses Bash-Skript auf zwei Arten ausführen.

  1. Erteilen der Arbeitserlaubnis für die Datei
bahdem@bahdems ~ % ls -al ensemble.sh -rw-r--r-- 1 bahdem staff 5 Feb 21 12:24 ensemble.sh bahdem@bahdems ~ % chmod +x ensemble.sh bahdem@bahdems ~ % ls - al community.sh -rwxr-xr-x 1 bahdem staff 5 Feb 21 12:24 community.sh bahdem@bahdems ~ % ./toluluk.sh Freiheit wo immer du bist!
  1. vor der Skriptdatei bash Eingabe des Befehls
bahdem@bahdems ~ % ls -al community.sh -rw-r--r-- 1 bahdem staff 5 Feb 21 12:50 community.sh bahdem@bahdems ~ % bash community.sh Freiheit wo du bist!

Die von uns verwendete Skriptdatei;

#!/bin/bash # Ein Beispiel für ein Bash-Skript echo "Freiheit ist, wo immer du bist!"

Um die Skriptdatei Zeile für Zeile zu erklären;

  • Linie 1 - Kram Linie genannt.
  • Zeile 2 – Kommentarzeile. #Danach wird nichts ausgeführt. Es dient nur zur Erklärung.
  • Zeile 4 – Dies ist die Befehlszeile, die eine Nachricht auf dem Bildschirm ausgibt. Sie können diesen Befehl selbst in die Befehlszeile eingeben und erhalten genau die gleiche Ausgabe.

Warum verwenden wir ./?

Jeder Befehl im Terminal (ls, cp, mkdir ..) Wir führen es aus, indem wir einfach seinen Namen eingeben, aber um unsere Skriptdatei auszuführen, ./ Sie haben vielleicht bemerkt, dass wir setzen Bash, wenn wir einen Befehl in die Befehlszeile eingeben PATH Es sucht nach diesem Befehl in den Standortinformationen, die in der von uns benannten Variablen gespeichert sind. In unserem Terminal dies PATH dessen Wert echo Wir können es mit dem Befehl sehen

bahdem@bahdems ~ % echo $PATH /usr/local/opt/openjdk@11/bin:/Users/bahdem/.local/share/gem/ruby/3.0.0/bin:/usr/local/opt/ruby/ bin:/usr/local/opt/nmap/bin: /Users/bahdem/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Wie Sie oben bemerkt haben, gibt es mehrere Verzeichnisse dazwischen.:" wurde geschrieben. Das auch PATH gibt an, dass die Variable von mehr als einem Index begleitet wird. Bash betrachtet nur diese spezifischen Verzeichnisse und ignoriert Unterverzeichnisse oder Ihr aktuelles Verzeichnis. Es untersucht diese Verzeichnisse nacheinander und führt die erste Instanz des gefundenen Programms oder Skripts aus.

$PATH variable ist eine individuelle Benutzervariable. Daher kann es jeder Benutzer im System nach seinen Wünschen anpassen.

Dies geschieht aus verschiedenen Gründen.

  • Es ermöglicht die Installation mehrerer verschiedener Versionen eines Programms. Was ausgeführt wird $PATHWir können es überprüfen, je nachdem, wo es sich in unserem befindet.
  • Sie können Ihre eigenen Skripte und Programme ausführen, indem Sie einfach ihre Namen eingeben, wo immer Sie sich auf dem System befinden.
  • Erhöht die Sicherheit. Beispielsweise könnte ein böswilliger Benutzer tatsächlich alles in Ihrem Home-Verzeichnis löschen. ls kann ein Skript namens erstellen Sie möchten dieses Skript nicht unbeabsichtigt ausführen. $PATHDies wird nicht passieren, es sei denn, es ist in Ihrer .

Eine Programm- oder Skriptdatei $PATHWenn es sich nicht in einem der Verzeichnisse in Ihrer befindet, können Sie es ausführen, indem Sie Bash mitteilen, wo es suchen soll. Dazu fügen Sie vor dem Namen der Programm- oder Skriptdatei einen absoluten oder relativen Pfad hinzu. des Punktes ( . ) ist eigentlich ein Verweis auf Ihr aktuelles Verzeichnis. Es funktioniert in beide Richtungen, wie unten gezeigt.

bahdem@bahdems ~ % /Users/bahdem/community.sh Freiheit wo immer du bist! bahdem@bahdems ~ % ./toluluk.sh Freiheit wo immer du bist!

Der Shebang (#!)

Wie in der ersten Zeile unserer Skriptdatei #! zu der Zeile, die mit beginnt Kram Name ist gegeben. Nach diesen Zeichen folgt der Pfad zu dem Programm/Interpreter, der den Inhalt der Skriptdatei ausführt/interpretiert. diese Linie bash wird der Pfad zu Bash für Skriptdateien sein. Es gibt viele andere Arten von Skripten, und jedes hat seinen eigenen Interpreter.

Hier ist die Formatierung sehr wichtig.

  • Der Shebang muss in der ersten Zeile der Datei stehen. Zeile 2 funktioniert nicht, selbst wenn die erste Zeile leer ist.
  • # vor dem Zeichen bzw ! Zwischen den Zeichen dürfen keine Leerzeichen stehen.
  • Der Interpreter-Pfad muss korrekt definiert sein. Sie werden wahrscheinlich eher ein absolutes Verzeichnis für den Interpreter als ein relatives Verzeichnis verwenden, da Sie das Skript von verschiedenen Orten aus ausführen werden.