Was ist Shell-Scripting und warum sollten Sie es verwenden?

Was ist Shell-Scripting und warum sollten Sie es verwenden?

Die Shell ist ein Programm innerhalb eines Linux- oder Unix-Betriebssystems, mit dem Sie Befehle zur Ausführung durch das System eingeben können. Wenn auf einem Linux-Computer ein Terminalfenster geöffnet wird, startet es das Shell-Programm, das eine Schnittstelle zur Eingabe von Befehlen darstellt. Diese Schnittstelle wird als Befehlszeilenschnittstelle bezeichnet. Wenn ein Befehl eingegeben wird, wird dieser von der Shell ausgeführt und die Ausgabe wird auf dem Bildschirm angezeigt.





Neben der interaktiven Annahme und Ausführung von Befehlen kann die Shell auch in einer Datei gespeicherte Befehle ausführen. Diese Ausführungsart ist bekannt als Shell-Skripting und in diesem Artikel behandeln wir die Grundlagen der Shell-Skripterstellung.





1. Geschichte der Shell

Angefangen mit Unix in den 1970er Jahren gab es ein Shell-Programm namens V6-Schale von Ken Thomson entwickelt. Es war eine interaktive Shell und es fehlte an Scripting-Fähigkeiten.





Es folgte die Bourne-Muschel im Jahr 1977 und wird bis heute als Standard-Shell für die Wurzel Konto. Diese Shell fügte Scripting-Fähigkeiten hinzu, die sich im Laufe der Jahre in der Praxis als äußerst nützlich erwiesen haben.

Die Weiterentwicklung der Schale in den 1980er Jahren führte zu vielen beliebten Schalenvarianten, von denen die beliebtesten die C-Schale und der Korn-Shell . Jede dieser Shells brachte ihre eigene Syntax mit, die sich in einigen Fällen drastisch von der ursprünglichen Shell unterschied.



Eine der beliebtesten Muscheln ist heute die Bash-Shell . Bash steht für Bourne-Again-Shell und ist eine stark verbesserte Variante der ursprünglichen Bourne Shell.

Werbung von Kindle Fire entfernen 7

In diesem Artikel beschreiben wir Shell-Scripting für die Bash-Shell .





2. Ausführen eines Shell-Skripts

Wie führt man ein Shell-Skript aus? Einfach. Übergeben Sie einfach den Skriptpfad als Argument an die Shell:

Ein Beispiel-Shell-Skript:





echo 'hello world'

Führen Sie es wie folgt aus:

$ bash hello.sh
# prints
hello world

Notiz: Die Shell verlangt, dass Zeilen mit LF-Zeichen (Line-Feed) abgeschlossen werden. Wenn Sie Ihr Shell-Skript unter Windows schreiben und versuchen, es direkt auf einem Linux-System auszuführen, können Fehler auftreten. Windows verwendet die CR-LF-Kombination (Carriage-Return-Line-Feed) für den Zeilenabschluss. Dies muss nur in LF konvertiert werden. Suchen Sie in Ihrem Windows-Editor nach Möglichkeiten, dies zu tun.

Es gibt eine andere Möglichkeit, ein Shell-Skript direkt als Befehl auszuführen. Fügen Sie die folgende Zeile ein (die hashbang -Deklaration) als erste Zeile Ihres Shell-Skripts.

HP Laptop Lüftergeräusch Windows 10
#!/bin/bash

Mit dieser Änderung lautet unser einfaches Shell-Skript jetzt:

#!/bin/bash
echo 'hello world'

Nun müssen Sie die Skriptdatei wie folgt ausführbar machen:

$ chmod +x hello.sh

An dieser Stelle können Sie die Skriptdatei direkt ausführen, ohne explizit auf die Shell verweisen zu müssen.

$ hello.sh
# prints
hello world

Sehen wir uns nun einige Vorteile der Verwendung von Shell-Skripten an.

3. Aufgabenautomatisierung

Der erste Vorteil der Verwendung von Shell-Skripten ist die Automatisierung häufig ausgeführter Aufgaben. Angenommen, Sie haben eine Aufgabe, die Sie täglich ausführen müssen. Wenn Sie täglich mehrere Befehle auf Ihrem Linux-System ausführen müssen, können Sie diese Befehle in einer Datei speichern und das Skript ausführen. Beispiele beinhalten:

  • Archivieren Sie täglich eine Datei oder einen Ordner und laden Sie sie auf a . hoch Cloud-Speichereinrichtung wie S3.
  • Komprimieren Sie Protokolldateien, die täglich wachsen.
  • Abrufen von Aktienkursen, Parsen der abgerufenen Daten und Auslösen einer E-Mail oder SMS, wenn bestimmte Bedingungen erfüllt sind (zu hohe oder zu niedrige Kurse).

4. Mehrere Befehle kombinieren

Neben der Automatisierung häufiger Aufgaben kann es auch von Vorteil sein, dass Sie mehrere Befehlsfolgen zu einem einzigen Befehl kombinieren können. Sich an einen einzelnen Befehl zu erinnern ist viel einfacher als mehrere Befehle, ganz zu schweigen von der Reihenfolge, in der sie ausgeführt werden müssen.

Ein Beispiel wäre die Boot-Up-Sequenz des Linux-Betriebssystems selbst. Als Teil des Bootvorgangs führt das Betriebssystem eine Reihe von Befehlen aus, um das System in einen ordnungsgemäßen Zustand zu versetzen. Diese Befehle sind eigentlich Shell-Skripte, die unter dem /etc Verzeichnis. Wenn Sie sich eines dieser Shell-Skripte ansehen, werden Sie die Komplexität des Bootens eines Systems erkennen, das Sie ohne Shell-Skripte möglicherweise von Hand ausführen mussten.

Das Folgende ist ein Beispiel-Shell-Skript, /etc/profil , die jedes Mal ausgeführt wird, wenn sich ein Benutzer anmeldet. Stellen Sie sich vor, Sie geben diese Befehle von Hand ein!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Einfacher zu entwickeln

Es ist möglich, die gleichen Aktionen wie ein Shell-Skript innerhalb eines regulären Programms auszuführen, das in C/C++ geschrieben wurde. Es ist jedoch viel einfacher, ein Shell-Skript zu schreiben und zu debuggen als ein C/C++-Programm. Insbesondere für Systemverwaltungsaufgaben, die das Ausführen externer Befehle, das Erstellen und Entfernen von Dateien und Verzeichnissen, das Umleiten von Ausgaben usw.

C/C++-Programme eignen sich besser für eine viel niedrigere Betriebsebene, wie das Aufrufen von Systemaufrufen, das Manipulieren von Datenstrukturen usw.

6. Transparenz

Da es sich um eine Textdatei handelt, kann ein Shell-Skript leicht angezeigt werden, um zu überprüfen, welche Aktionen es ausführt. Im Gegensatz dazu wissen Sie nur, was ein in einer Sprache wie C/C++ geschriebenes (und zu einer ausführbaren Datei kompiliertes) Programm tut, wenn es Ihnen sagt, oder wenn Sie Zugriff auf den Quellcode haben. Sie können beispielsweise überprüfen, ob ein Shell-Skript Dateien löscht, und wenn Sie diese Dateien benötigen, können Sie sie an einen anderen Speicherort kopieren.

Es ist auch viel einfacher, Probleme mit Shell-Skripten zu diagnostizieren als mit normalen Programmen, da Sie sich den Quellcode ansehen können. Schlägt dieses Skript fehl, weil kein Verzeichnis vorhanden ist? Sie können im Skriptcode nachsehen und das Verzeichnis erstellen (obwohl ein gut funktionierendes Shell-Skript es überprüfen und erstellen sollte, um solche Fehler zu vermeiden).

7. Tragbar

ZU Shell-Skript kann auf andere Unix- und Unix-ähnliche Betriebssysteme übertragen und ausgeführt werden (sofern die Shell selbst vorhanden ist). Selbst beim Übertragen eines Shell-Skripts von verschiedenen Architekturen wie x86, MIPS, Sparc usw. sind Shell-Skripte viel portierbarer als C/C++-Programme.

Die einzige Möglichkeit, ein C/C++-Programm zu übertragen und auf einem anderen System zu verwenden, besteht darin, den Quellcode zu kopieren, das Programm zu erstellen und zu versuchen, es auszuführen. Selbst dann funktioniert es möglicherweise nicht wie erwartet, wenn es architekturspezifischen Code verwendet.

Nun, da Sie eine Vorstellung davon haben, was Shell-Skripte sind und ihre vielen Vorteile, möchten Sie sie nicht für Ihre Aufgaben verwenden? Mit welchen Problemen sind Sie bei der Verwendung konfrontiert worden? Bitte lass es uns in den Kommentaren unten wissen.

So erhalten Sie ein animiertes Hintergrundbild Windows 10
Teilen Teilen Tweet Email 5 Tipps zum Aufladen Ihrer VirtualBox-Linux-Maschinen

Haben Sie genug von der schlechten Leistung virtueller Maschinen? Hier ist, was Sie tun sollten, um Ihre VirtualBox-Leistung zu steigern.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Linux-Bash-Shell
Über den Autor Jay Sridhar(17 Artikel veröffentlicht) Mehr von Jay Sridhar

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren