Wenn Sie mit Linux-Systemen beginnen, werden Begriffe wie „Shell-Scripting“ oder „Bash-Scripting“” kann durchaus üblich sein - aber was bedeuten sie?? Bevor wir ins Detail gehen, kann Ihnen das Erlernen von Bash-Skripten helfen, Zeit bei der Ausführung und Durchführung verschiedener Systemaufgaben zu sparen, die Linux-Befehlszeile (Terminal) besser zu verstehen und mehrere Systemaufgaben zu automatisieren.
Was ist Bash?
Bash, ein Akronym für "Bourne-Again-Shell", ist ein Unix-Shell- oder Befehlssprachen-Interpreter für das GNU-Betriebssystem. Es war die wichtigste Shell für Linux-Distributionen und Apple macOS-Releases vor macOS Catalina. Bash ist auch für Windows 10 über das Windows-Subsystem für Linux verfügbar.
Bash wird normalerweise in einem Textfenster ausgeführt, das allgemein als Terminal bekannt ist, in das Benutzer Befehle eingeben, um verschiedene Aufgaben auszuführen. Bash kann auch Befehle ausführen, die in eine Datei geschrieben wurden, eine Methode, die als . bezeichnet wird „Bash-Scripting“.”
Unterschied zwischen Bash-Scripting und Shell-Scripting
Shell-Scripting und Bash-Scripting sind nicht dasselbe. Beim Bash-Scripting verwenden Sie explizit die Bash-Shell. Auf der anderen Seite kann Shell-Skripting ein ziemlich weit gefasster Begriff sein, da wir andere Shells als Bash zur Verfügung haben. Einige der gebräuchlichsten sind Korn (ksh), C-Shell (csh), Z-Shell (zsh) und die Bash-Shell (sh). Es wäre jedoch keine Überraschung, wenn Leute, die Bash-Skripting und Shell-Skripting verwenden, dasselbe bedeuten würden. Unser Beitrag zu den Top 6 Open Source Shells für Linux enthält eine detaillierte Beschreibung dieser Shells.
In diesem Beitrag werden wir uns das Bash-Skripting ansehen. Standardmäßig verwenden viele verfügbare Linux-Distributionen die Bash-Shell. Schauen Sie sich unseren Beitrag zu den 6 besten Linux-Distributionen für Anfänger an. Um die Shell zu bestätigen, die Sie in Ihrer aktuellen Linux-Distribution verwenden, führen Sie den Befehl auf dem Terminal aus.
echo $SHELL
Aus dem obigen Bild können Sie sehen, dass der Standardinterpreter in meinem System bash ist. Derzeit verwende ich Ubuntu 20.04 LTS. Lass uns eintauchen!
Bash-Skripte verstehen
Bash-Skripte sind Textdateien mit Bash-Befehlen, die ausgeführt werden, um verschiedene Aufgaben auszuführen. Um diese Skripte zu schreiben, benötigen Sie nur einen einfachen Texteditor wie gedit, leaf pad, vim, nano und vieles mehr. Bitte denken Sie daran, Ihre Skripte mit a . zu speichern .Sch
Erweiterung und als Nur-Text und nicht als Rich-Text. Einer meiner Lieblingseditoren, den ich zum Schreiben von Skripten verwende, ist der Nano-Editor.
Benennen, Zuweisen von Berechtigungen und Ausführen eines Bash-Skripts
Stellen Sie wie oben erklärt sicher, dass Sie die .sh-Erweiterung für Ihre Bash-Skripte. Zum Beispiel können Sie ein Skript mit dem Namen fosslinux_backup.Sch
. Es wäre jedoch am besten, wenn Sie bei der Benennung Ihrer Skripte vorsichtig wären. Die meisten Leute speichern beispielsweise die meisten ihrer Skripte gerne als „Test“.„Die meisten wissen nicht, dass es einen in Unix integrierten Befehl namens test gibt, der Dateitypen überprüft und Werte vergleicht. Mit dem Befehl what können Sie prüfen, ob ein Programm mit dem gleichen Namen wie Ihr Skript vorhanden ist, um Programmkonflikte zu vermeiden.
welcher [Befehl] e.g welcher test
Aus der obigen Ausgabe können wir sehen, dass test bereits ein eingebauter Befehl ist. Um Konflikte zwischen Programmen zu vermeiden, nenne ich daher keines meiner Skripte als name "Prüfung.”
Um das Skript für jeden Benutzer ausführbar zu machen, verwenden Sie den folgenden Befehl:
chmod +x [Skript.Sch]
Um das Skript für den aktuellen Benutzer ausführbar zu machen, verwenden Sie den folgenden Befehl:
chmod u+x [Skript.Sch]
Führen Sie nun den folgenden Befehl aus, um das Skript auszuführen:
./[Skriptname]
Mit der obigen Methode werden Sie feststellen, dass Sie die CD
Befehl, um in das Verzeichnis zu wechseln, das das Skript enthält, oder den Pfad zum Skript zu übergeben. Es gibt jedoch einen Workaround dafür. Speichern Sie Ihre Skripte im Behälter
Verzeichnis im Home-Verzeichnis vorhanden.
Mit den letzten Updates kommen die meisten Distributionen nicht mit dem Behälter
Ordner standardmäßig. Sie müssen es daher manuell erstellen. Wenn Sie Ihre Skripte in diesem Ordner ablegen, können Sie das Skript ausführen, indem Sie seinen Namen auf dem Terminal eingeben, ohne die CD
und ./
Befehle.
Bash-Scripting-Richtlinien
Bevor Sie Ihr erstes Skript schreiben, gibt es einige Richtlinien, die Sie beim Schreiben von Skripten verstehen müssen.
- Alle Ihre Skripte sollten mit der Zeile „#!/bin/bash.”
- Setzen Sie jeden Befehl in eine neue Zeile.
- Jeder Kommentar beginnt mit einem
#
Symbol. - Befehle liegen bei
()
Klammern.
Das #!/bin/bash
(Hash-Bang Hack)-Anweisung ist der Pfad zu der Shell, die wir verwenden werden. Wenn Sie eine andere Shell verwenden, müssen Sie diesen Pfad bearbeiten. Wir verstehen, dass alle Kommentare mit dem beginnen #
Symbol. Wenn jedoch mit a (!)
Markierung im Hash-Bang Hack, wird das Skript gezwungen, mit der Shell, auf die diese Zeile zeigt, ausgeführt zu werden. In unserem Fall ist es die Bash-Shell.
Dein erstes Bash-Skript
Wie die meisten Programmiersprachen werden wir ein Skript schreiben, das die "Hallo Welt" Anweisung bei Ausführung. Öffnen Sie Ihren bevorzugten Texteditor und fügen Sie die folgenden Befehle ein. Speichern Sie die Textdatei unter fossHelloWorld.Sch
oder ein anderer Name, der kein eingebauter Befehl ist.
#!/bin/bash #Dieses Skript gibt 'Hello World' auf dem Terminal-Echo "Hello World" aus
Nachdem Sie die Datei gespeichert haben, machen Sie sie ausführbar, indem Sie den folgenden Befehl ausführen:
chmod +x fossHelloWorld.Sch
Führen Sie es nun mit dem folgenden Befehl aus:
./fossHelloWorld.Sch
Das obige Skript hat nur drei Zeilen. Der erste ist der Hash-Bang-Hack, den wir oben besprochen haben, der zweite ist ein Kommentar und der dritte ist der Befehl, der ausgeführt wird. Beachten Sie, dass Kommentare nie ausgeführt werden.
Schauen wir uns andere Bash-Scripting-Funktionen an, die Sie verwenden können.
Echo-Befehl
Der Echo-Befehl wird verwendet, um die Ausgabe über die Linux-Befehlszeile oder das Terminal zu drucken. Wenn Sie Entwickler sind und schon einmal mit PHP gearbeitet haben, müssen Sie auch auf diesen Befehl gestoßen sein. Lassen Sie uns ein kleines Bash-Skript schreiben, um zu demonstrieren, wie dieser Befehl funktioniert.
#!/bin/bash #Lass uns die erste Zeile ausgeben echo "Das ist Fosslinux.com - Mit einer neuen Zeile" #Geben wir die zweite Anweisung ohne eine neue Zeile aus echo -n "Das ist Fosslinux - Keine neue Zeile"
Speichern Sie Ihr Skript, weisen Sie die erforderlichen Berechtigungen zu und führen Sie es aus.
Um den Code zu verstehen, gibt der erste echo-Befehl eine Anweisung aus und geht in die nächste Zeile. Der zweite echo-Befehl hat die -nein
Argument, das verhindert, dass das Skript zur nächsten Zeile geht. Sie können viele andere Optionen mit dem Echo-Befehl verwenden, einschließlich Variablen, wie wir unten sehen werden.
Variablen
Variablen sind ein üblicher und notwendiger Bestandteil jeder Programmiersprache. Man kann Bash-Variablen auf verschiedene Weise deklarieren. Wenn Sie einer Variablen einen Wert zuweisen, müssen Sie keine Symbole verwenden. Wenn Sie jedoch den Wert der Variablen aufrufen, müssen Sie die $
Zeichen am Anfang der Variablen variable.
Sie können Variablen auf dem Terminal oder als Skripte verwenden. Führen Sie die folgenden Befehle auf Ihrem Terminal aus.
myWebsite = "Fosslinux.com" echo $meineWebsite
Lassen Sie uns nun ein Bash-Skript erstellen, das zwei Eingaben vom Benutzer entgegennimmt und in Variablen speichert stores $x
und $y
. Das Skript prüft dann, ob die beiden Werte gleich sind oder nicht.
#!/bin/bash echo "Geben Sie die erste Zahl ein" read a echo "Geben Sie die zweite Zahl ein" read b if [[ $a -eq $b ]] then echo "Zahlen sind gleich" else echo "Zahlen sind nicht gleich" fi
Speichern Sie das Skript und führen Sie es aus. In der Abbildung unten sehen Sie, dass wir verschiedene Werte eingegeben haben und das Skript überprüfen konnte, ob sie gleich sind oder nicht.
Schauen wir uns nun den Code genauer an. Die ersten beiden Echo-Anweisungen fordern den Benutzer auf, die erste und zweite Zahl einzugeben. Das lesen
Befehl wartet darauf, dass der Benutzer eine Zahl eingibt und speichert sie in der angegebenen Variablen. In unserem Fall ist das ein
und b
. Wir haben dann eine if-Anweisung, die prüft, ob die beiden Werte gleich sind oder nicht.
Bedingte Anweisung
In jeder Programmiersprache steuern bedingte Anweisungen den Ablauf eines Programms. Ein Stück Code wird nur ausgeführt, wenn eine bestimmte Bedingung erfüllt ist. Zu den häufigsten bedingten Anweisungen gehören „wenn-dann-sonst“ und „Fall“.” Unten ist die grundlegende Syntax der if-then-else-Anweisung.
wenn [[ Bedingung ]] dannsonst fi
Sehen Sie sich das folgende Skript an, das die bedingte Anweisung „wenn-dann-sonst“ verwendet.
#!/bin/bash echo "Geben Sie Ihr Alter ein" lesen Sie das Alter if ((Alter > 18 )) then echo "Sie können zur Party gehen" else echo "Sie sind nicht berechtigt, zur Party zu gehen" fi
Gehen wir das Skript oben durch. Wir haben das Echo
Anweisung, die Benutzer auffordert, ihre Altersnummer einzugeben. Das lesen
-Anweisung speichert das eingegebene Alter in einer Variablen „Alter“.” Wir haben dann eine if-then-else bedingte Anweisung, die prüft, ob das Alter größer als 18 ist, bevor wir den Benutzer anweisen.
Schleifen
Schleifen werden häufig verwendet, wenn Sie einen Codeabschnitt mehrmals ausführen möchten. Wenn ich zum Beispiel 1000 Zeilen der Anweisung „Willkommen bei Fosslinux“ wiedergeben möchte, benötige ich 1000 Echo-Anweisungen. Bei Schleifen muss ich jedoch nur angeben, wie oft die Anweisung auf dem Terminal wiederholt oder gedruckt werden soll. Bash unterstützt drei Arten von Loops; For-Schleife, While-Schleife und die Until-Schleife. Schauen wir uns jeden von ihnen an.
-
Die For-Schleife
Eine For-Schleife wird verwendet, um eine Liste von angegebenen Daten oder ein Array zu durchlaufen. Unten ist die grundlegende Syntax der Bash For-Schleife;
für Wert in 1 2 3 4 5… N do Anweisung1 Anweisung2 Anweisung-N erledigt
oder,
for VALUE in file1 file2 file3 do Anweisung1 auf $VALUE Anweisung2 Anweisung-N fertig
Schauen Sie sich das Skript unten an. Es durchläuft die angegebenen Wochentage und druckt sie Zeile für Zeile auf dem Terminal aus.
#Lese einen Wochentagnamen in jeder Iteration der Schleife für Tag in Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag do echo "$day" done
Speichern wir das Skript unter ForLoop.Sch
und führe es aus. Unten ist ein Screenshot der Ausgabe.
Das ist nur ein einfaches Beispiel dafür, was Sie mit der For-Schleife machen können. Sie können es auch mit bedingten Anweisungen kombinieren, um eine bestimmte Aufgabe abzuschließen.
-
Die While-Schleife
Die While-Schleife führt eine bestimmte Aufgabe aus, während eine bestimmte Bedingung Wahr bleibt. In jeder Iteration überprüft die Schleife zuerst die Bedingung, bevor die Anweisungen ausgeführt werden. Wenn die Bedingung False ist, wird die Schleife beendet. Die grundlegende Syntax der While-Schleife der Bash lautet wie folgt:
während [BEDINGUNG] [BEFEHLE] erledigt ist
Zum Beispiel können wir ein Skript haben, das die Anweisung ausgibt „Willkommen bei FOSSLINUX.KOM“ 20 mal, bis eine Variable X auf 20 . gesetzt wird. Versuchen wir das praktisch umzusetzen. Schauen Sie sich das Skript unten an.
#!/bin/bash x=1 while [ $x -le 20 ] do echo "Willkommen bei FOSSLINUX.COM" x=$(( $x + 1 )) fertig
Speichern wir das Skript unter While-Schleife.Sch
und führe es aus. Unten ist ein Screenshot der Ausgabe.
Werfen wir einen Blick auf das obige Skript While-Schleife. Wir deklarieren zuerst eine Variable X und geben ihr den Wert 1. Wir erstellen dann eine While-Anweisung, die die Anweisung „Welcome to FOSSLINUX“ ausgibt.COM” während X kleiner als 20 . ist. Schließlich inkrementieren wir X nach jeder Iteration um eins.
-
Die Bis-Schleife
Die Bash-Bis-Schleifen werden verwendet, um eine Reihe von Anweisungen oder Befehlen auszuführen, solange die eingestellte Bedingung als falsch ausgewertet wird. Unten ist die grundlegende Syntax der Until-Schleife.
bis [BEDINGUNG] [EINFÜHRUNGEN/BEFEHLE] erledigt ist
Ähnlich wie die While-Schleife wertet die Until-Schleife zuerst die gesetzte Bedingung aus, bevor die Anweisungen oder Befehle ausgeführt werden. Wenn die Bedingung als falsch ausgewertet wird, werden Anweisungen ausgeführt. Die Schleife wird beendet, wenn die Bedingung wahr ist. Schauen Sie sich das Beispiel unten an.
#!/bin/bash count=0 bis [ $count -gt 5 ] echo Counter: $count ((count++)) done
Nachdem wir das obige Skript gespeichert und ausgeführt haben, erhalten wir die folgende Ausgabe:
Die obigen Skripte erstellen zuerst eine Variablenanzahl und setzen sie auf null (0). Das ist die Bedingung, die den Ablauf unseres Programms steuert. Die Until-Schleife prüft, ob der Zählwert größer als 5 . ist. Ist dies nicht der Fall, werden die übergebenen Anweisungen gedruckt instructions. Wenn der Wert jedoch größer als 5 ist, wird die Schleife sofort beendet. Zuletzt erhöhen wir den Zählwert um 1 (count++).
Bash-Funktionen
In der Programmierung und Skripterstellung werden Funktionen verwendet, um einen wiederverwendbaren Code zu speichern, der zum Ausführen einer bestimmten Aufgabe benötigt wird. Wenn Sie also ähnliche Befehle haben, die Sie an verschiedenen Stellen in Ihrem Skript ausführen möchten, müssen Sie diese Befehle nicht wiederholt schreiben. Schließen Sie sie in eine Funktion ein und führen Sie stattdessen die Funktion aus.
Unten ist die grundlegende Syntax der Bash-Funktion.
Funktionsname ()
oder,
Funktion Funktionsname
Lassen Sie uns ein einfaches Skript erstellen, das Funktionen verwendet. Wir erstellen zunächst eine Funktion namens „myFunction“, die beim Aufruf die Anweisung „Hello I am the first function“ ausgibt. Die zweite Funktion, „myCities“, ist etwas fortgeschritten, da sie übergebene Argumente benötigt. Die Argumente werden nach dem Aufruf des Funktionsnamens angegeben. Sie sind in der Funktion als $1 . zugänglich.
#!/bin/bash myFunction () echo "Hallo, ich bin die erste Funktion" echo "Hallo, ich bin die erste Funktion" echo echo "Das ist die zweite Funktion" function myCities () echo Hallo $1 myFunction myCities Washington,D.C myCities Phoenix
Nach dem Speichern und Ausführen des Skripts erhalten wir die folgende Ausgabe.
Bash-Menüs
Beim Schreiben eines Skripts zur Ausführung einer erweiterten Aufgabe muss der Benutzer möglicherweise eine einzelne Option aus mehreren auf dem Terminal angezeigten Optionen auswählen. Um dies zu erreichen, verwenden wir die bash wählen
Befehl.
Es erstellt ein einfaches Menüskript, das die Benutzer auffordert, ihre bevorzugten Linux-Distributionen aus einer Liste auszuwählen. Schauen Sie sich das Skript unten an.
#!/bin/bash #Drucknachricht für den Benutzer echo "Wählen Sie Ihre bevorzugte Linux-Distribution" Wählen Sie die Distribution in Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali do #Drucken Sie den ausgewählten Wert if [[ $distro == "Exit" ]] then exit 0 else echo "Ausgewählte Linux-Distribution ist $distro" fi done
Speichern wir das Skript als Menü.sch und führe es aus. Wir erhalten die Ausgabe unten.
Im obigen Skript haben wir eine Liste von Seven Linux-Distributionen, aus denen der Benutzer eine auswählen wird. Nachdem sie eine Auswahl getroffen haben, wird diese in der Variablen gespeichert verteilen
und später gedruckt, indem es mit der Zeichenfolge verkettet wird „Ausgewählte Linux-Distribution ist.” Bash-Auswahlmenüs können sehr nützlich sein, insbesondere wenn Sie mehrere Skripte haben, die verschiedene Aufgaben ausführen, und man dasjenige auswählen muss, das ausgeführt werden soll.
Arithmetik
Jede Programmiersprache unterstützt die Ausführung arithmetischer Operationen und Bash-Scripting ist keine Ausnahme. Wie wir arithmetische Operationen durchführen, ist jedoch etwas anders. Im Folgenden finden Sie eine der Möglichkeiten, wie Sie arithmetische Operationen in bash ausführen können. Wir werden uns vier Arten von arithmetischen Operationen ansehen - Summe, Division und Multiplikation.
#!/bin/bash # Berechne das Summenergebnis=$((70+15)) # Drucken Sie den Summenwert echo "sum = $result" # Berechnen Sie das Divisionsergebnis=$((100/25)) # Drucken Sie den Divisionswert echo "division = $result" #Multiplikationsergebnis berechnen=$((15*15)) echo "Multiplikation = $result"
Speichern wir das obige Skript als Arithmetik.sch und führe es aus. Wir erhalten die Ausgabe unten.
Fazit
Dies ist eine vollständige Anleitung für Anfänger, um mit Bash-Skripting zu beginnen. Bash bietet jedoch noch mehr als das, was in diesem Tutorial behandelt wird. Einer der Orte, die ich empfehlen würde, um Ihre Fähigkeiten zu verbessern, ist das Bash-Referenzhandbuch von GNU. Wenn Sie Probleme haben oder diesen Beitrag kommentieren, können Sie gerne auf die Kommentare unten klicken.