Jeder von Euch weiß hoffentlich, was ein Script ist!? In diesen Scripten, schreibt man eine Reihe von Linuxbefehlen rein, die beim Aufrufen des Scriptes dann zeilenweise abgearbeitet werden. Hier mal ab und zu, ich hoffe für den ein oder anderen interessant, nette Beispiele. Hier das Erste
Wir haben ein Backup-Verzeichnus, in das regelmäßig VMs gesichert werden, auf dem Host. Nun möchten wir ab und zu die letzte Version sichern, sagen wir hier bei mir zu Hause. Es soll hier jetzt nicht ums runterladen usw. gehen, sondern nur um das Suchen und Finden der letzten aktuellen Sicherung.
webserver=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
Das da oben ist ein funktionierendes Beispiel. Was macht es? Wir zerlegen das mal ein wenig, da es sich hier um zwei Befehle handelt, die zusammengefasst werden.
* webserver
* ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
* tail -n 1
webserver ist dabei eine Variable
Der Befehl ls sollte allgemein bekannt sein, hier kombiniert mit ein paar Optionen
Und der Befehl tail
ls
ls steht für List und gibt den Inhalt eines Verzeichnisses aus. Die Optionen bedeuten
-1 list one file per line. Avoid '\n' with -q or -b
-t sort by modification time, newest first
-r, --reverse reverse order while sorting
--group-directories-first group directories before files;
Quelle: ls --help
Jedes Ergebnis kommt in eine Zeile, das Neueste zuerst. Und das Ganze reverse, also anders herum. Damit steht das neueste File unten. Evt. vorhandene Ordner kommen an den Anfang der Ausgabe. Beispiel
ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
vzdump-qemu-100-2019_09_05-03_00_01.vma.lzo
vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
Hier sehen wir, das wir zwei Dateien haben. Die Neueste steht ganz unten.
tail
Mit tail kann man sich die letzte Zeile einer Datei anzeigen. Hier im Beispiel, geben wir die letzte Zeile mit
-n 1
aus. Standardmäßig gibt tail die letzten 10 Zeilen aus. Somit bekommen wir von unserem Beispiel oben, die letzte Zeile angezeigt.
root@vms-01 /backup/dump # ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1
vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
Ausgangsbefehl
Der Befehl ganz oben, ich wiederhole noch mal
webserver=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
macht folgendes. Das $-Zeichen speichert das Ergebnis von ls und tail zwischen und weist es der Variablen webserver zu. Das Zeichen | verbindet zwei Linuxbefehle, erst wird der eine abgearbeitet, dann der Zweite. Diese Variable können wir dann weiterverarbeiten. Beispiel
echo $webserver
vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
Wer inhaltliche Fehler findet, dafür gibt es hier den Button mit der Aufschrift Antworten