GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Anfängerserie Nr. 1:Erstellen Sie Ihr erstes Bash-Shell-Skript und führen Sie es aus

Wenn Sie es mehr als einmal tun müssen, automatisieren Sie es!

Sie werden oft feststellen, dass Sie eine einzelne Aufgabe unter Linux immer und immer wieder wiederholen. Es kann sich um eine einfache Sicherung eines Verzeichnisses handeln, um temporäre Dateien zu bereinigen oder sogar um das Klonen einer Datenbank.

Die Automatisierung einer Aufgabe ist eines der vielen nützlichen Szenarien, in denen Sie die Leistungsfähigkeit von Bash-Skripten nutzen können.

Lassen Sie mich Ihnen zeigen, wie Sie ein einfaches Bash-Shell-Skript erstellen, wie Sie ein Bash-Skript ausführen und was Sie über Shell-Skripte wissen müssen.

Erstellen und führen Sie Ihr erstes Shell-Skript aus

Lassen Sie uns zuerst ein neues Verzeichnis namens scripts erstellen, das alle unsere Bash-Skripte hosten wird.

mkdir scripts
cd scripts

Erstellen Sie nun in diesem „Skriptverzeichnis“ eine neue Datei namens hello.sh mit dem cat-Befehl:

cat > hello.sh

Fügen Sie die folgende Zeile darin ein, indem Sie sie im Terminal eingeben:

echo 'Hello, World!'

Drücken Sie Strg+D, um den Text in der Datei zu speichern und den cat-Befehl zu verlassen.

Sie können auch einen terminalbasierten Texteditor wie Vim, Emacs oder Nano verwenden. Wenn Sie ein Desktop-Linux verwenden, können Sie auch einen grafischen Texteditor wie Gedit verwenden, um den Text zu dieser Datei hinzuzufügen.

Im Grunde verwenden Sie also den echo-Befehl, um "Hello World" zu drucken. Sie können diesen Befehl direkt im Terminal verwenden, aber in diesem Test führen Sie diesen Befehl über ein Shell-Skript aus.

Machen Sie nun die Datei hello.sh ausführbar, indem Sie den Befehl chmod wie folgt verwenden:

chmod u+x hello.sh

Und schließlich führen Sie Ihr erstes Shell-Skript aus, indem Sie hello.sh Ihre gewünschte Shell-„bash“ voranstellen:

bash hello.sh

Sie sehen Hello, World! auf dem Bildschirm gedruckt. Das war wahrscheinlich das einfachste Hello World-Programm, das Sie je geschrieben haben, richtig?

Hier ist ein Screenshot aller Schritte, die Sie oben gesehen haben:

Konvertieren Sie Ihr Shell-Skript in ein Bash-Skript

Verwirrt? Lassen Sie sich noch nicht verwirren. Ich werde Ihnen die Dinge erklären.

Bash, die Abkürzung für „Bourne-Again-Shell“, ist nur eine Art von vielen verfügbaren Shells in Linux.

Eine Shell ist ein Befehlszeileninterpreter, der Befehle akzeptiert und ausführt. Wenn Sie jemals zuvor einen Linux-Befehl ausgeführt haben, haben Sie die Shell verwendet. Wenn Sie ein Terminal unter Linux öffnen, führen Sie bereits die Standard-Shell Ihres Systems aus.

Bash ist in den meisten Linux-Distributionen oft die Standard-Shell. Aus diesem Grund wird Bash oft als Synonym für Shell verwendet.

Die Shell-Skripte haben oft fast die gleiche Syntax, unterscheiden sich aber manchmal auch. Beispielsweise beginnt der Array-Index in Zsh bei 1 und nicht in Bash bei 0. Ein für die Zsh-Shell geschriebenes Skript funktioniert in Bash nicht so, wenn es Arrays hat.

Um unangenehme Überraschungen zu vermeiden, sollten Sie dem Interpreter mitteilen, dass Ihr Shell-Skript für die Bash-Shell geschrieben ist. Wie machst du das? Du benutzt Shebang!

Die SheBang-Zeile am Anfang des Shell-Skripts

Die Zeile „#!/bin/bash“ wird als Shebang-Zeile und in manchen Literaturstellen auch als Hashbang-Zeile bezeichnet und das liegt daran, dass sie mit den beiden Zeichen Hash '#' und Bang '!' beginnt.

#! /bin/bash

echo 'Hello, World!'

Wenn Sie die Zeile „#!/bin/bash“ ganz oben in Ihr Skript einfügen, weiß das System, dass Sie bash als Interpreter für Ihr Skript verwenden möchten. Somit können Sie das Skript hello.sh jetzt direkt ausführen, ohne ihm die Bash voranzustellen.

Hinzufügen Ihres Shell-Skripts zum PATH (damit es kann von jedem Verzeichnis ausgeführt werden)

Sie haben vielleicht bemerkt, dass ich ./hello.sh verwendet habe, um das Skript auszuführen; Sie erhalten eine Fehlermeldung, wenn Sie das führende ./

weglassen
[email protected]:~/scripts$ hello.sh
hello.sh: command not found

Bash dachte, Sie wollten einen Befehl namens hello.sh ausführen. Wenn Sie einen Befehl auf Ihrem Terminal ausführen; Die Shell sucht nach diesem Befehl in einer Reihe von Verzeichnissen, die in der PATH-Variablen gespeichert sind.

Sie können echo verwenden, um den Inhalt dieser PATH-Variablen anzuzeigen:

echo $PATH
/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Der Doppelpunkt (:) trennt den Pfad jedes Verzeichnisses, das Ihre Shell scannt, wenn Sie einen Befehl ausführen.

Linux-Befehle wie echo, cat usw. können von überall ausgeführt werden, da ihre ausführbaren Dateien in den bin-Verzeichnissen gespeichert sind. Die bin-Verzeichnisse sind im PATH enthalten. Wenn Sie einen Befehl ausführen, prüft Ihr System den PATH auf alle möglichen Orte, an denen es suchen sollte, um die ausführbare Datei für diesen Befehl zu finden.

Wenn Sie Ihr Bash-Skript von überall ausführen möchten, als wäre es ein normaler Linux-Befehl, fügen Sie den Speicherort Ihres Shell-Skripts zur PATH-Variablen hinzu.

Rufen Sie zuerst den Speicherort Ihres Skriptverzeichnisses ab (vorausgesetzt, Sie befinden sich im selben Verzeichnis), verwenden Sie den PWD-Befehl:

pwd

Verwenden Sie den Exportbefehl, um Ihr Skriptverzeichnis zur PATH-Variablen hinzuzufügen.

export PATH=$PATH:/home/user/scripts
Beachten Sie, dass ich das 'Skriptverzeichnis' ganz am Ende an unsere PATH-Variable angehängt habe. Damit der benutzerdefinierte Pfad nach den Standardverzeichnissen gesucht wird.

Der Moment der Wahrheit ist da; starte hello.sh:

[email protected]:~/scripts$ hello.sh
Hello, World!

Es klappt! Damit sind wir am Ende dieses Tutorials angelangt. Ich hoffe, Sie haben jetzt eine grundlegende Vorstellung von Shell-Scripting. Sie können das unten stehende PDF herunterladen und das Gelernte mit einigen Beispiel-Skripting-Herausforderungen üben. Ihre Lösungen werden ebenfalls bereitgestellt, falls Sie Hinweise benötigen.

Bash-Kapitel-1-ÜbungsfragenProbleme und deren Lösung, um zu üben, was Sie gerade in diesem Kapitel gelernt habenBash-Kapitel-1-Übungsfragen-Linux-Handbuch.pdf26 KB

Da ich Ihnen die PATH-Variable vorgestellt habe, bleiben Sie dran für das nächste Bash-Skripting-Tutorial, in dem ich Shell-Variablen im Detail bespreche.


Linux
  1. Wie Sie Ihr erstes Qt-Programm in Debian 10 schreiben und ausführen

  2. Wie führe ich ein Shell-Skript auf einer Unix-Konsole oder einem Mac-Terminal aus?

  3. Führen Sie das Bash-Skript als Daemon aus

  4. Führen Sie das Bash-Skript nach der Anmeldung aus

  5. Führen Sie den Bash-Befehl auf der Jenkins-Pipeline aus

So führen Sie ein Bash-Skript aus

Bash Beginner Series #2:Variables in Bash Shell Scripting verstehen

Bash-Anfängerserie Nr. 3:Übergabe von Argumenten an Bash-Skripte

Bash-Anfängerserie Nr. 7:Entscheidungsfindung mit If Else- und Case-Anweisungen

Bash-Anfängerserie Nr. 10:Automatisierung mit Bash

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus