2.6 Bash
Wenn wir uns über SSH mit dem Server verbinden, landen wir automatisch in der Bourne-again shell (Bash). Die Bash ist der Kommandozeileninterpreter des Terminalfensters unseres Linux-Servers.
Bash steht für "Bourne-again shell" und ist eine verbesserte Version der ursprünglichen Unix-Shell, der Bourne-Shell (sh) von Stephen Bourne. Die Bash wurde 1989 entwickelt, um die Funktionalität der Bourne-Shell zu erweitern und gleichzeitig kompatibel mit dieser zu bleiben. Sie bietet interaktive Kommandozeilenfunktionen und Skripting-Fähigkeiten, die das Automatisieren von Aufgaben und die Verwaltung von Systemen erleichtern. Die Bash ist heute die am weitesten verbreitete Shell in der Unix-Welt und wird auf den meisten Linux-Systemen standardmäßig verwendet.
Die Bash ist also ein Kommandozeileninterpreter, der die vom Benutzer eingegebenen Befehle liest und ausführt.
Grundlegende Bash-Konzepte
Einige Bash-Konzepte kennen wir bereits.
-
Pipelines ermöglichen es, die Ausgabe eines Befehls direkt als Eingabe für einen anderen Befehl zu verwenden, was durch das
|
-Zeichen erreicht wird. -
Umleitungen verwenden
>
,>>
,<
,2>
und&>
Zeichen, um die Standardausgabe, Standardeingabe und Fehlerausgabe umzuleiten. -
Job-Kontrolle in der Bash ermöglicht es, Prozesse im Hintergrund (
&
) oder Vordergrund (fg
) laufen zu lassen und laufende Jobs zu verwalten (jobs
). -
Aliase sind Kurzbefehle, die längere Befehle oder Befehlskombinationen abkürzen.
Beispiel
Hier ein Alias zu einem komplexeren Befehl
alias counthtml='find /var/www/html -type f -name "*.html" | wc -l'
.Wir können nach der Definition in die Kommandozeile einfach
counthtml
schreiben und damit den gesamten Befehlt ausführen. Aber dieser Alias ist nur bis zum nächsten Ausloggen definiert. Um den Alias dauerhaft verwenden zu können, müssen wir die Datei.bashrc
editieren, die im Heimatverzeichnis eines jeden Users liegt.Hierzu die Konfigurationsdatei öffen
nano ~/.bashrc
und ans Ende der Datei den o.g. Alias schreiben.Um die neue Konfiguration
.bashrc
der Bash bekannt zu geben, muss man diese mitsource ~/.bashrc
aufrufen.Nerd-Wissen: man kann mit Hilfe von
echo
und der richtigen Umleitung einfach den Alias-Befehl ans Ende der.bashrc
schreiben. Probieren Sie es aus, aber machen Sie sich vorher ein Backup der Datei. -
Variablen in der Bash werden verwendet, um Werte zu speichern, die später im Skript oder in der Kommandozeile verwendet werden können. Variablen werden ohne Leerzeichen um das Gleichheitszeichen definiert.
-
Umgebungsvariablen sind spezielle Variablen, die vom System verwendet werden, um Informationen über die Systemumgebung zu speichern. Beispiele sind
PATH
,HOME
undUSER
. -
Skripte sind Dateien, die eine Reihe von Bash-Befehlen enthalten und ausgeführt werden können, um Aufgaben zu automatisieren.
Programmieren in Bash-Scripten
Wir wollen hier nicht ins Detail gehen und es soll nur gezeigt werden, dass die Bash-Scripte sehr mächtig sein können.
Wichtig ist, dass in der ersten Zeile #!/bin/bash
steht, da damit beim Aufrufen des Programms die Bash ausgeführt wird.
Es gibt viele gängige Anweisungen, wie z.B. if, for, while und Funktionen.
-
if-Anweisungen
-
for-Schleifen
-
while Schleifen
-
Lesen von Benutzereingaben
-
Funktionen
Bash-Skripte und Crontab
Eine wichtige Eigenschaft von Bash-Skripten ist der direkte Aufruf von Linux-Befehlen, die man dann in der Crontab wiederum automatisieren kann. Hier ein Beispiel:
#!/bin/bash
# Verzeichnis, das gesichert werden soll
SOURCE_DIR="/home/user/daten"
# Verzeichnis, in das das Backup gespeichert werden soll
BACKUP_DIR="/home/user/backup"
# Dateiname des Backups (aktuelles Datum hinzufügen)
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d).tar.gz"
# Erstellen des Backup-Verzeichnisses, falls es nicht existiert
mkdir -p $BACKUP_DIR
# Erstellen des Backups
tar -czf $BACKUP_FILE $SOURCE_DIR
# Ausgabe einer Bestätigung
echo "Backup von $SOURCE_DIR wurde in $BACKUP_FILE erstellt."
- Machen Sie das Skript ausführbar mit
chmod +x backup.sh
- Automatisierung mit
crontab -e
: - Fügen Sie die folgende Zeile hinzu, um das Skript jeden Tag um 2 Uhr morgens auszuführen:
0 2 * * * /home/user/backup.sh
- Diese Zeile im
crontab
-Editor plant die tägliche Ausführung des Skriptsbackup.sh
um 2 Uhr morgens.
Nerd-Wissen Cron-Scripting
Die Zeile 0 2 * * * /home/user/backup.sh
im crontab
-Editor bedeutet, dass das Skript backup.sh
jeden Tag um 2 Uhr morgens ausgeführt wird.
0
: Minute (0. Minute der Stunde)2
: Stunde (2. Stunde des Tages, also 2 Uhr morgens)*
: Tag des Monats (jeder Tag des Monats)*
: Monat (jeder Monat)*
: Wochentag (jeder Wochentag)
Das Skript /home/user/backup.sh
wird somit täglich um 2:00 Uhr morgens ausgeführt.