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

Bash Scripting Einführungstutorial mit 5 praktischen Beispielen

Ähnlich zu unseren fortlaufenden Unix Sed- und Unix Awk-Serien werden wir mehrere Artikel über Bash-Skripting veröffentlichen, die alle Bash-Scripting-Techniken mit praktischen Beispielen abdeckt.

Shell ist ein Programm, das Benutzerbefehle interpretiert. Die Befehle werden entweder direkt vom Benutzer eingegeben oder aus einer Datei gelesen, die als Shell-Skript bezeichnet wird.

Shell wird als interaktive Shell bezeichnet, wenn sie die Eingaben des Benutzers direkt liest.

Shell wird als nicht interaktive Shell bezeichnet, wenn sie Befehle aus einer Datei liest und ausführt. In diesem Fall liest die Shell jede Zeile einer Skriptdatei von oben nach unten und führt jeden Befehl so aus, als ob er direkt vom Benutzer eingegeben worden wäre.

Gibt den Wert der eingebauten Shell-Variablen $- aus, um zu wissen, ob die Shell interaktiv oder nicht interaktiv ist.

# echo $-
himBH

Hinweis:Die Variable $- enthält ein „i“, wenn die Shell interaktiv ist .

Unix hat verschiedene Shells. Bourne-Shell (sh), Bourne Again-Shell (bash), C-Shell (csh), Korn-Shell (ksh), Tenex-C-Shell (tcsh). Verwenden Sie die Unix-Befehle which oder whereis, um herauszufinden, wo sich eine bestimmte Shell befindet, wie unten gezeigt.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

Sie können zwischen den Shells wechseln, indem Sie den Shell-Namen eingeben. Geben Sie beispielsweise csh ein, um zur C-Shell zu wechseln.

Schreiben und Ausführen von Shell-Skripten

Beispiel 1. Hello World Bash-Skript

  1. Erstellen Sie ein Skript, indem Sie die folgenden zwei Zeilen mit Ihrem bevorzugten Editor in eine Datei eingeben.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. Sie können einen beliebigen Namen für die Datei wählen. Der Dateiname sollte nicht mit einem der integrierten Unix-Befehle identisch sein.
  4. Das Skript beginnt immer mit den beiden Zeichen „#!“, die als She-Bang bezeichnet werden. Dies zeigt an, dass die Datei ein Skript ist und mit dem Interpreter (/bin/bash) ausgeführt werden sollte, der durch den Rest der ersten Zeile in der Datei angegeben ist.
  5. Führen Sie das Skript wie unten gezeigt aus. Wenn Sie Probleme beim Ausführen eines Shell-Skripts haben, lesen Sie das Tutorial zur Ausführung von Shell-Skripts
  6. $ bash helloworld.sh
    Hello World
  7. Wenn Sie den Befehl „bash helloworld.sh“ ausführen, startet er die nicht-interaktive Shell und übergibt ihr den Dateinamen als Argument.
  8. Die erste Zeile teilt dem Betriebssystem mit, welche Shell erzeugt werden soll, um das Skript auszuführen.
  9. Im obigen Beispiel Bash-Interpreter, der das Skript interpretiert und die Befehle nacheinander von oben nach unten ausführt.
  10. Sie können das Skript sogar ohne vorangestelltes „bash“ ausführen durch:
    • Ändern Sie die Berechtigung für das Skript, damit Sie (Benutzer) es ausführen können, indem Sie den Befehl „chmod u+x helloworld.sh“ verwenden.
    • Das Verzeichnis, das das Skript enthält, sollte in der PATH-Umgebungsvariable enthalten sein. Wenn nicht enthalten, können Sie das Skript ausführen, indem Sie den absoluten Pfad des Skripts angeben.
  11. echo ist ein Befehl, der einfach das Argument ausgibt, das wir ihm geben. Es wird auch verwendet, um den Wert der Variablen zu drucken.

Bash-Startup-Dateien

Wie wir bereits in unserem Artikel über die Ausführungssequenz für .bash_profile und verwandte Dateien besprochen haben, liest und führt die Bash, wenn sie als interaktive Shell aufgerufen wird, zuerst Befehle aus /etc/profile. Wenn /etc/profile nicht existiert, liest es die Befehle von ~/.bash_profile, ~/.bash_login und ~/.profile in der angegebenen Reihenfolge und führt sie aus. Die Option –noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu verhindern.

Normalerweise führt Ihr bash_profile ~/.bashrc aus. Wenn Sie möchten, können Sie eine Willkommensnachricht anzeigen. Dies wird nur ausgeführt, wenn Sie sich zum ersten Mal anmelden. Sie können die Variablen nach Belieben exportieren und die Aliase festlegen, die ausgeführt werden und verfügbar sind, sobald Sie die Shell geöffnet haben. Wenn eine Login-Shell beendet wird, liest Bash Befehle aus der Datei ~/.bash_logout.

und führt sie aus

Beispiel 2. Drucken Sie eine Willkommensnachricht, wenn Sie sich anmelden

Geben Sie den folgenden Inhalt in Ihre bash_profile-Datei ein. Wenn die Datei nicht existiert, erstellen Sie eine Datei mit dem folgenden Inhalt.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

Wenn Sie sich bei einer interaktiven Shell anmelden, sehen Sie die unten gezeigten Willkommensnachrichten.

login as: root
root@dev-db's password:
Welcome on dev-db

Beispiel 3. Systembezogene Informationen drucken

Wenn Sie sich bei einer interaktiven Shell anmelden, können Sie den Namen des auf dem Server installierten Kernels, die Bash-Version, die Betriebszeit und die Zeit auf dem Server anzeigen.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Wenn Sie eine interaktive Shell starten, gibt sie die unten gezeigte Nachricht aus.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Beispiel 4. Letzte Anmeldedaten drucken

Wenn mehrere Benutzer denselben Computer mit derselben Anmeldung verwenden, sind Details wie der Computer, von dem aus die letzte Anmeldung erfolgt ist, und die Uhrzeit, zu der sie sich angemeldet haben, die nützlichsten Details. Dieses Beispiel gibt die letzten Anmeldedaten während des Starts einer interaktiven Shell aus.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Letztes Protokoll | grep "root" | awk {'print "Letzte Anmeldung von:"$3

print "Datum und Uhrzeit der letzten Anmeldung:",$4,$5,$6,$7,$8,$9;}'
Während des Startvorgangs erhalten Sie die unten gezeigte Meldung.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Letzte Anmeldung von:sasikala-laptop

Datum und Uhrzeit der letzten Anmeldung:Dienstag, 22. Februar, 11:24:01 +0100 2010

Beispiel 5. Variablen exportieren und Aliase beim Start setzen

Die häufigsten Befehle, die Sie in Ihren .bashrc- und .bash_profile-Dateien verwenden werden, sind der Export- und der Alias-Befehl.

Ein Alias ​​ersetzt einfach einen Textabschnitt durch einen anderen. Wenn Sie einen Alias ​​ausführen, ersetzt er einfach das, was Sie eingegeben haben, durch das, was dem Alias ​​entspricht. Wenn Sie beispielsweise einen Alias ​​für den Befehl ls festlegen möchten, um die Dateien/Ordner mit den Farben aufzulisten, gehen Sie wie folgt vor:

alias ls 'ls --color=tty'

Wenn Sie diesen Befehl zu einer der Startdateien hinzufügen, können Sie den Befehl ls ausführen, wo er automatisch durch den Befehl ls –color=tty ersetzt wird.

Der Befehl Export wird verwendet, um eine Umgebungsvariable festzulegen. Verschiedene Umgebungsvariablen werden vom System oder anderen Anwendungen verwendet. Sie sind einfach eine Möglichkeit, Parameter zu setzen, die jede Anwendung/jedes Skript lesen kann. Wenn Sie eine Variable ohne den Exportbefehl setzen, existiert diese Variable nur für diesen bestimmten Prozess.

Im folgenden Beispiel wird die Umgebungsvariable HISTSIZE exportiert. Die Zeile, die mit # beginnt, ist eine Kommentarzeile.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}

Linux
  1. Welcher Shell-Interpreter führt ein Skript ohne Shebang aus?

  2. Awk-Tutorial:Awk-Variablen verstehen mit 3 praktischen Beispielen

  3. Bash Shell Exit Status Tutorial mit praktischen Beispielen

  4. Das ultimative Bash-Array-Tutorial mit 15 Beispielen

  5. 15 nützliche integrierte Bash Shell-Befehle (mit Beispielen)

Bash-Scripting – Printf-Befehl mit Beispielen erklärt

Bash-Scripting – Assoziatives Array mit Beispielen erklärt

Bash-Scripting – Indiziertes Array mit Beispielen erklärt

Shell-Scripting Schritt-für-Schritt-Tutorial

Tutorial zu Bash-Shell-Funktionen mit 6 praktischen Beispielen

Bash-Skript für Schleife mit Beispielen erklärt