Skript farbig formatieren und übersichtlich ausrichten
Linux-Skripte werden in der Regel dazu eingesetzt, um mit dem Anwender interaktiv in Verbindung zu treten. Informationen, Statusmeldungen oder abgearbeitete Aufgaben geben Rückmeldung darüber, an welcher Stelle sich das automatisierte Skript gerade befindet. Diese Ausgaben erfolgen meistens mit dem Befehl echo, welches standardmäßig einfach nur unformatierten Text ausgibt.
Mit so genannten ASCII-Codes kann man die Ausgabe von echo
farbig gestalten und den Text ausrichten
Ruft man echo mit der Option -e auf, so können die bekannten ASCII-Codes verwendet werden, so dass die Ausgabe farblich gestaltet oder der Text ausgerichtet werden kann. Ein Blick in die Manpage von echo zeigt uns die wichtigsten Optionen:
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
Die Option -n verhindert, dass keine neue Zeile automatisch hinzugefügt wird. Das ist nützlich, wenn man die Ausgabe in einer Zeile verwirklichen möchte, aber im Quelltext des Linux-Scriptes der Übersicht halber mehrere Zeilen verwendet werden.
Das Beispiel
echo -n "Ich "
echo -n "heiße "
echo "Peter"
würde den Text
# Ich heiße Peter
ausgeben.
Farbige Ausgabe mit echo
Um mit echo eine farbige Ausgabe zu erreichen, muss man die Option -e verwenden. Der Code \033[1;36m definiert die Farbe und die Schriftanzeige, wobei \033 den ASCII-Code einleitet.
Beispiel:
echo -e "\033[1;31m Das ist roter Text, der fett ist"
Der darauffolgende Code kann folgendermaßen interpretiert werden:
Die Zahl 1 steht für die Schriftanzeige. Mögliche Werte sind 0=normal, 1=fett, 4=unterstrichen, 5=blinkend, 7=invertiert.
Die Zahl 36 steht für die Schriftfarbe: Mögliche Werte sind 30=schwarz, 31=rot, 32=grün, 33=Gelb, 34=blau, 35=violett, 36=cyan, 37=weiß
Das m schließt die Schriftformatierung ab. Natürlich wird ab dieser Formatierungsangabe sämtlicher Text farbig dargestellt. Um nur einen bestimmten Bereich farbig zu markieren, setzt man die Standardformatierung \033[0 an das Ende des Textes:
echo -e "\033[1;31m Das ist roter Text, der fett ist\033[0"
Hier noch einmal die Farbtabelle in der Übersicht:
Mit so genannten ASCII-Codes kann man die Ausgabe von echo
farbig gestalten und den Text ausrichten
Ausgabe ordnen und ausrichten
Wer Text ausrichtet, der verwendet unter anderem Tabs, Backslash oder horizontale Tabs. Diese können auch in der Ausgabe von echo verwendet werden. Um beispielsweise einen Tab einzusetzen, verwendet man -e und \t:
echo -e "Gehalt:\t 2500 Euro"
Folgende Möglichkeiten zur Textausrichtung können nach diesem Prinzip verwendet werden:
\0NNN the character whose ASCII code is NNN (octal)
\\ = backslash
\a = alert (BEL)
\b = backspace
\c = suppress trailing newline
\f = form feed
\n = new line
\r = carriage return
\t = horizontal tab
\v = vertical tab
Praxisbeispiel
Um diese Ausgabe zu erhalten...
... verwendet man dieses Linux-Skript:
echo -e "\033[1;36m Pruefe USB-Festplatte: \t \033[1;32m[$DEVICE_EXT angeschlossen]\033[0m"
echo -e "\033[1;36m Pruefe Mount-Verzeichnis: \t \033[1;32m[$MOUNT_VRZ ist frei]\033[0m"
echo -ne "\033[1;36m Mounte die USB-Festplatte: \t \033[0m"
echo -e "\033[1;32m[OK]\033[0m"
echo -e "Das hat ja schon einmal super geklappt"
echo -e "Schau Dir nun die Festplatten-Belegung an"
echo " "
echo -e "\033[1;36m Diese Daten sollen kopiert werden \033[0m"
echo -e "\033[1;36m ================================= \033[0m"
ls -1 -sh $BACKUP_VRZ/monats*
ls -1 -sh $BACKUP_VRZ/benary*
ls -1 -sh $BACKUP_VRZ/lpr*
echo " "
echo -e "\033[1;36m Freier Speicher auf der USB-HDD \033[0m"
echo -e "\033[1;36m =============================== \033[0m"