Scriptausgaben farbig gestalten

Aus Dirk's Wiki
Zur Navigation springen Zur Suche springen

Um die Ausgaben farbig zu gestalten werden ANSI Escapesequenzen benutzt. Normalerweise dient ein Terminal dazu einfach nur Text auf dem Bildschirm auszugeben. Da das etwas unzureichend ist, wurden Sequenzen standardisiert. Diese Sequenzen sind „Befehle” an das Terminal und werden nicht ausgeben, sondern veranlassen das Terminal zu einem bestimmten Verhalten. Die Sequenzen sind normale ASCII-Zeichen. Sie starten meistens mit einem Control Sequence Introducer (das Escape Zeichen \033 ) gefolgt von einem [. Danach folgen die Parameter.

Hintergrundfarben

Dieses Script gibt nur die Hintergrundfarben aus. Jeder echo-Ausdruck schreibt eine Hintergrundfarbe in das Terminal und gibt deren Code aus. Die Werte 40m-47m stehen dabei für die Hintergrundfarben. Der Wert 0m setzt alle Attribute wieder zurück (Reset).

#!/bin/bash

echo -e "Hintergrundfarben"
echo -e "\033[0m Kein      \033[0m  0m"
echo -e "\033[40m Schwarz  \033[0m  40m"
echo -e "\033[41m Rot      \033[0m  41m"
echo -e "\033[42m Grün     \033[0m  42m"
echo -e "\033[43m Gelb     \033[0m  43m"
echo -e "\033[44m Blau     \033[0m  44m"
echo -e "\033[45m Rosa     \033[0m  45m"
echo -e "\033[46m Cyan     \033[0m  46m"
echo -e "\033[47m Hellgrau \033[0m  47m"

Erläuterung an Zeile 7:

echo -e
Interpretierung von Maskierungen mittels Rückschrägstrich aktivieren
\033
ASCII Escape Zeichen oktal
[
gehört noch zur Sequenz
42m
Hintergrundfarbe für Grün
Grün
dieser Text wird jetzt auf der Console ausgegeben mit der in der Sequenz gesetzten Hintergrundfarbe
\033[0m 42m
alle Attribute wieder zurücksetzten und das Wort 42m ausgeben

Ausgabe:

Console-farbe1.PNG

Vorder- und Hintergrundfarben

Dieses Script gibt eine Reihe von Farbcodes auf dem Terminal aus. Jeder echo-Aufruf druckt eine Vordergrundfarbe auf hellgrauem (47m) und schwarzem Hintergrund (40m) aus und schreibt den Code für die Vordergrundfarbe in die Zeilenmitte. Die Werte 30-37 stehen hier für die Vordergrundfarbe.

#!/bin/bash

echo "Auf Hellgrau:            Auf Schwarz:"
echo -e "\033[47m\033[1;37m   Weiss      \033[0m  1;37m     \033[40m\033[1;37m   Weiss      \033[0m"
echo -e "\033[47m\033[37m   Hellgrau   \033[0m    37m   \033[40m\033[37m   Hellgrau   \033[0m"
echo -e "\033[47m\033[1;30m   Grau       \033[0m  1;30m     \033[40m\033[1;30m   Grau       \033[0m"
echo -e "\033[47m\033[30m   Schwarz    \033[0m    30m   \033[40m\033[30m   Schwarz    \033[0m"
echo -e "\033[47m\033[31m   Rot        \033[0m    31m   \033[40m\033[31m   Rot        \033[0m"
echo -e "\033[47m\033[1;31m   Hellrot    \033[0m  1;31m     \033[40m\033[1;31m   Hellrot    \033[0m"
echo -e "\033[47m\033[32m   Grün       \033[0m    32m   \033[40m\033[32m   Grün       \033[0m"
echo -e "\033[47m\033[1;32m   Hellgrün   \033[0m  1;32m     \033[40m\033[1;32m   Hellgrün   \033[0m"
echo -e "\033[47m\033[33m   Braun      \033[0m    33m   \033[40m\033[33m   Braun      \033[0m"
echo -e "\033[47m\033[1;33m   Gelb       \033[0m  1;33m     \033[40m\033[1;33m   Gelb       \033[0m"
echo -e "\033[47m\033[34m   Blau       \033[0m    34m   \033[40m\033[34m   Blau       \033[0m"
echo -e "\033[47m\033[1;34m   Hellbau    \033[0m  1;34m     \033[40m\033[1;34m   Hellblau   \033[0m"
echo -e "\033[47m\033[35m   Purpur     \033[0m    35m   \033[40m\033[35m   Purpur     \033[0m"
echo -e "\033[47m\033[1;35m   Rosa       \033[0m  1;35m     \033[40m\033[1;35m   Rosa       \033[0m"
echo -e "\033[47m\033[36m   Cyan       \033[0m    36m   \033[40m\033[36m   Cyan       \033[0m"
echo -e "\033[47m\033[1;36m   Hellcyan   \033[0m  1;36m     \033[40m\033[1;36m   Hellcyan   \033[0m"

Ausgabe:

Console-farbe.PNG