Farbige Ausgabe auf der Konsole

22. Januar 2006

Ihr Anliegen

Sie wollen in Ihren Shellskripten farbige Textausgaben produzieren. Sie haben das an verschiedenen Stellen schon gesehen (z.B. beim Starten der Dienste beim Booten) und fragen sich, wie das wohl funktioniert.

Das Prinzip dahinter

Alle unter Linux üblichen Terminalemulationen (z.B. xterm, konsole, die Linux Konsole, PuTTY) verstehen bestimmte Steuerzeichen, mit denen man Textattribute beeinflussen kann. Diese muss man einfach mit echo ausgeben.

So geht's im Einzelnen

Alle Steuersequenzen werden eingeleitet mit Escape [. Danach kommt eine Zahl und dann ein kleines m. Das Escape-Zeichen hat den Asciicode 27. Damit man es mit echo ausgeben kann, muss man die Option -e verwenden und dann die Sequenz \033 eintragen:

echo -e "Jetzt wird es \033[31mROT\033[0m."
Jetzt wird es ROT.

Einige wichtige Steuerzeichen

Folgende Tabelle gibt einen Überblick über einige nützliche Sequenzen. Dabei ist zu beachten, dass nicht jede Terminalemulation alle Attribute korrekt darstellen kann. Manchmal wird z.B. Fettschrift durch ersatzweise durch eine größere Helligkeit dargestellt:

    \033[0malle Attribute zurücksetzen
    \033[1mFettschrift
    \033[4mUnterstreichen
    \033[5m
    Blinken
    \033[7m
    inverse Darstellung
    \033[30mSchriftfarbe schwarz
    \033[31mSchriftfarbe rot
    \033[32mSchriftfarbe grün
    \033[33mSchriftfarbe gelb
    \033[34mSchriftfarbe blau
    \033[35mSchriftfarbe magenta
    \033[36mSchriftfarbe türkis
    \033[37mSchriftfarbe weiß
    \033[40mHintergrund schwarz
    \033[41mHintergrund rot
    \033[42mHintergrund grün
    \033[43mHintergrund gelb
    \033[44mHintergrund blau
    \033[45mHintergrund magenta
    \033[46mHintergrund türkis
    \033[47mHintergrund weiß