Bei diesem Grundkurs werden dir die Funktionen von Bash erklärt.
Inhaltsverzeichnis:
|- 1. Einleitung / Was ist Bash ?
|- 2. Anwendungsbereiche
|- 3. Methoden & Abfragen
|- 4. Erste Beispiele
|- 5. Erweiterte Beispiele
Teil 2
|- 6. Arrays
1. Einleitung / Was ist Bash ?
Bash (Bourne-Again Shell) ist die Standart Shell unter den meisten Linux Distributionen.
In der Regel wird BASH als Kommandozeile genutzt, aber BASH ist auch eine Programmiersprache.
Bash ist ein Kommandozeileninterpreter. Das heißt das BASH die Eingaben des Benutzers / Skripts ausführt.
Gibt man zum Beispiel in PuTTY den Befehl "whoami" ein, so erhält man den Benutzernamen des aktuell eingeloggten Benutzers.
Beispiel Ausgabe: root
Das gleiche kann man auch mit einem Bash Skript lösen.
2. Anwendungsbereiche
Bash kommt im Alltag sehr oft zum Einsatz.
Möchte man zum Beispiel ein automatisiertes Backupskript auf Systemebene schaffen,
löst man das meistens mit BASH.
Aber auch andere Systemaufgaben, wie das Übertragen von Dateien zwischen mehreren Servern kann BASH wunderbar lösen.
Grundsätzlich werden BASH Skripte eingesetzt um Automatisierungen vorzunehmen, um
Zeit durch die Eingabe in eine Shell zu sparen und um Sachen zu
vereinfachen.
3. Methoden & Abfragen
Ausgabe:
Eine Ausgabe kann mit "echo" und "echo -e" erzeugt werden.
"echo -e" erlaubt Backslashes, zb für Zeilemumbrüche ("\r\n")
Es gibt aber noch viele weitere Möglichkeiten.
Einfach in der Shell (PuTTY etc) folgendes eingeben: man echo
String:
Ein String wird unter BASH folgendermaßen eingeleitet:
STRING="Hallo Welt"
Um den Text auszugeben, fügen wir folgendes hinzu:
echo $STRING
Das Skript sieht dann so aus:
Ausgabe: Hallo Welt
Ein String wird ohne Dollarzeichen deklariert.
Bei der Verwendung, muss das Dollarzeichen dann vorhanden sein.
Beispiel:
Möchten wir bei einem String ein Shell Kommando ausführen,
dann muss dieser Befehl in Backticks stehen.
Beispiel: Wir möchten in einem String den aktuell eingeloggten Benutzer speichern.
--
Wichtig: Nach dem Gleichheitszeichen darf kein Leerzeichen erfolgen!
Richtig: STRING="HALLO"
Falsch: STRING = "HALLO"
IF Abfrage
Eine IF-Abfrage ist unter BASH ebenfalls zu lösen.
Dazu leiten wir die Abfrage mit einem "if" ein und fügen anschließend die Anweisung hinzu:
Nachdem "if" folgt unsere Anweisung.
Trifft diese Anweisung zu (then), folgt unser Ausführcode.
Eine If-Abfrage wird mit "fi" beendet.
Möchten wir also abfragen ob bei einem String ein gewisser Satz steht,
machen wir das folgendermaßen:
Ausgabe: Anweisung korrekt!
--
Möchten wir nun eine ELSE Abfrage hinzufügen, dann geht das so:
Display All
Wie man nun sehen kann, wurde beim String einfach das "Mir" weggenommen.
Nun stimmt die Anweisung nicht mehr und das Skript gibt folgendes aus:
"Anweisung nicht korrekt!"
--
Möchten wir nun eine ELSEIF Abfrage einfügen, dann geht das folgendermaßen:
Display All
ELSEIF heißt unter BASH = elif
Wenn der STRING den Text "gehts gut" beinhaltet, dann geben wir "Anweisung zum Teil korrekt!" aus.
Wenn der STRING nicht beiden Anweisungen entspricht, geben wir "Anweisung nicht korrekt!".
--
Möchte man Zahlen vergleichen, kann man andere Operatoren nehmen:
-lt entspricht <
-gt entspricht >
-le entspricht <=
-ge entspricht >=
-eq entspricht ==
-ne entspricht !=
Display All
--
Wichtig: Zwichen Eckklammern und Anweisung müssen Leerzeichen sein!
Richtig: if [ ANWEISUNG ]; then
Falsch: if [ANWEISUNG]; then
Man kann auch mit BASH rechnen und weitere Abfragen machen.
Stichwort: operatoren
4. Erste Beispiele
Wir erinnern uns an den Befehl "whoami" (siehe 1.).
Damit wir diesen Befehl in einem BASH Skript einsetzen können,
legen wir eine Datei mit dem Namen "test.sh" an.
Ein Bash Skript startet immer mit einem Shebang.
Das ist Zeichenkombination #! am Anfang eines Skripts.
Danach müssen wir den Interpreter einsetzen.
Das wäre in unserem Fall: /bin/bash
Unser Skript sieht bis jetzt so aus:
Da wir den Befehl "whoami" ausführen möchten, fügen wir diesen Befehl einfach eine Zeile drunter ein:
Unser Skript ist nun fertig.
Damit wir das Bash Skript auch starten können, müssen wir es ausführbar machen.
Dazu gebe bitte in deiner Shell folgendes ein:
chmod +x test.sh
Wenn das Skript zb unter /var liegt, dann einfach
chmod +x /var/test.sh
Man kann auch direkt zur Datei navigieren (mit cd /) und den Befehl ausführen.
Damit wir unser Skript starten können, navigieren wir zu dem Skript (cd/) und geben folgenden Befehl ein:
./test.sh
Nun erhalten wir den Benutzernamen des aktuell eingeloggten Benutzers.
Beispiel Ausgabe: root
Wie man also sehen kann, kann BASH genau das machen, was man manuell mit der Shell macht.
Machen wir mit einem weiterem Beispiel weiter.
Jeder kennt unter Linux den Befehl "top".
Gibt man in seiner Shell (PuTTY etc) den Befehl "top" ein,
bekommt man eine Auflistung von den Prozessen, die derzeit laufen.
Beispiel Ausgabe:
[Blocked Image: http://puu.sh/1bUJL]
Möchten wir diesen Befehl in einem BASH-Skript nutzen, fügen wir ihn hinzu:
Nun startet das BASH Skript das Programm "top".
5. Erweiterte Beispiele
In diesem Beispiel möchten wir dem User "root" alle Verzeichnisse und Dateien auflisten lassen (ls).
Ist der Benutzer nicht "root", geben wir ihm eine Fehlermeldung aus.
Display All
--
Um zu überprüfen ob eine Datei existiert:
--
Inhaltsverzeichnis:
|- 1. Einleitung / Was ist Bash ?
|- 2. Anwendungsbereiche
|- 3. Methoden & Abfragen
|- 4. Erste Beispiele
|- 5. Erweiterte Beispiele
Teil 2
|- 6. Arrays
1. Einleitung / Was ist Bash ?
Bash (Bourne-Again Shell) ist die Standart Shell unter den meisten Linux Distributionen.
In der Regel wird BASH als Kommandozeile genutzt, aber BASH ist auch eine Programmiersprache.
Bash ist ein Kommandozeileninterpreter. Das heißt das BASH die Eingaben des Benutzers / Skripts ausführt.
Gibt man zum Beispiel in PuTTY den Befehl "whoami" ein, so erhält man den Benutzernamen des aktuell eingeloggten Benutzers.
Beispiel Ausgabe: root
Das gleiche kann man auch mit einem Bash Skript lösen.
2. Anwendungsbereiche
Bash kommt im Alltag sehr oft zum Einsatz.
Möchte man zum Beispiel ein automatisiertes Backupskript auf Systemebene schaffen,
löst man das meistens mit BASH.
Aber auch andere Systemaufgaben, wie das Übertragen von Dateien zwischen mehreren Servern kann BASH wunderbar lösen.
Grundsätzlich werden BASH Skripte eingesetzt um Automatisierungen vorzunehmen, um
Zeit durch die Eingabe in eine Shell zu sparen und um Sachen zu
vereinfachen.
3. Methoden & Abfragen
Ausgabe:
Eine Ausgabe kann mit "echo" und "echo -e" erzeugt werden.
"echo -e" erlaubt Backslashes, zb für Zeilemumbrüche ("\r\n")
Es gibt aber noch viele weitere Möglichkeiten.
Einfach in der Shell (PuTTY etc) folgendes eingeben: man echo
String:
Ein String wird unter BASH folgendermaßen eingeleitet:
STRING="Hallo Welt"
Um den Text auszugeben, fügen wir folgendes hinzu:
echo $STRING
Das Skript sieht dann so aus:
Ausgabe: Hallo Welt
Ein String wird ohne Dollarzeichen deklariert.
Bei der Verwendung, muss das Dollarzeichen dann vorhanden sein.
Beispiel:
Möchten wir bei einem String ein Shell Kommando ausführen,
dann muss dieser Befehl in Backticks stehen.
Beispiel: Wir möchten in einem String den aktuell eingeloggten Benutzer speichern.
--
Wichtig: Nach dem Gleichheitszeichen darf kein Leerzeichen erfolgen!
Richtig: STRING="HALLO"
Falsch: STRING = "HALLO"
IF Abfrage
Eine IF-Abfrage ist unter BASH ebenfalls zu lösen.
Dazu leiten wir die Abfrage mit einem "if" ein und fügen anschließend die Anweisung hinzu:
Nachdem "if" folgt unsere Anweisung.
Trifft diese Anweisung zu (then), folgt unser Ausführcode.
Eine If-Abfrage wird mit "fi" beendet.
Möchten wir also abfragen ob bei einem String ein gewisser Satz steht,
machen wir das folgendermaßen:
Ausgabe: Anweisung korrekt!
--
Möchten wir nun eine ELSE Abfrage hinzufügen, dann geht das so:
Source Code
Wie man nun sehen kann, wurde beim String einfach das "Mir" weggenommen.
Nun stimmt die Anweisung nicht mehr und das Skript gibt folgendes aus:
"Anweisung nicht korrekt!"
--
Möchten wir nun eine ELSEIF Abfrage einfügen, dann geht das folgendermaßen:
Shell-Script
ELSEIF heißt unter BASH = elif
Wenn der STRING den Text "gehts gut" beinhaltet, dann geben wir "Anweisung zum Teil korrekt!" aus.
Wenn der STRING nicht beiden Anweisungen entspricht, geben wir "Anweisung nicht korrekt!".
--
Möchte man Zahlen vergleichen, kann man andere Operatoren nehmen:
-lt entspricht <
-gt entspricht >
-le entspricht <=
-ge entspricht >=
-eq entspricht ==
-ne entspricht !=
Source Code
--
Wichtig: Zwichen Eckklammern und Anweisung müssen Leerzeichen sein!
Richtig: if [ ANWEISUNG ]; then
Falsch: if [ANWEISUNG]; then
Man kann auch mit BASH rechnen und weitere Abfragen machen.
Stichwort: operatoren
4. Erste Beispiele
Wir erinnern uns an den Befehl "whoami" (siehe 1.).
Damit wir diesen Befehl in einem BASH Skript einsetzen können,
legen wir eine Datei mit dem Namen "test.sh" an.
Ein Bash Skript startet immer mit einem Shebang.
Das ist Zeichenkombination #! am Anfang eines Skripts.
Danach müssen wir den Interpreter einsetzen.
Das wäre in unserem Fall: /bin/bash
Unser Skript sieht bis jetzt so aus:
Da wir den Befehl "whoami" ausführen möchten, fügen wir diesen Befehl einfach eine Zeile drunter ein:
Unser Skript ist nun fertig.
Damit wir das Bash Skript auch starten können, müssen wir es ausführbar machen.
Dazu gebe bitte in deiner Shell folgendes ein:
chmod +x test.sh
Wenn das Skript zb unter /var liegt, dann einfach
chmod +x /var/test.sh
Man kann auch direkt zur Datei navigieren (mit cd /) und den Befehl ausführen.
Damit wir unser Skript starten können, navigieren wir zu dem Skript (cd/) und geben folgenden Befehl ein:
./test.sh
Nun erhalten wir den Benutzernamen des aktuell eingeloggten Benutzers.
Beispiel Ausgabe: root
Wie man also sehen kann, kann BASH genau das machen, was man manuell mit der Shell macht.
Machen wir mit einem weiterem Beispiel weiter.
Jeder kennt unter Linux den Befehl "top".
Gibt man in seiner Shell (PuTTY etc) den Befehl "top" ein,
bekommt man eine Auflistung von den Prozessen, die derzeit laufen.
Beispiel Ausgabe:
[Blocked Image: http://puu.sh/1bUJL]
Möchten wir diesen Befehl in einem BASH-Skript nutzen, fügen wir ihn hinzu:
Nun startet das BASH Skript das Programm "top".
5. Erweiterte Beispiele
In diesem Beispiel möchten wir dem User "root" alle Verzeichnisse und Dateien auflisten lassen (ls).
Ist der Benutzer nicht "root", geben wir ihm eine Fehlermeldung aus.
Source Code
--
Um zu überprüfen ob eine Datei existiert:
--
The post was edited 4 times, last by oSteven ().