Farben in der Konsole

Normale Konsolenanwendungen präsentieren sich in einem recht farblosen Gewand: der Text ist meistens weiß dargestellt, während der Hintergrund schwarz ist. Die Konsole unter Linux bietet aber einiges mehr. Dank spezieller Escape-Sequenzen ist es möglich Text farbig oder sogar fett darzustellen. Der Name Escape-Sequenz kommt daher, dass die meisten eben dieser speziellen Steuerzeichen mit dem Escape-Tastencode 033 beginnen.
Betrachten wir zuerst ein ganz einfaches Konsolenprogramm, das "Hallo Welt"-Programm:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Hallo Welt!");
    return EXIT_SUCCESS;
}

Es tut nichts weiter, als die Zeichenkette "Hallo Welt!" in den Standardfarben auszugeben. Wenn wir jetzt die Textfarbe auf rot ändern wollen, so müssen wir eine Escape-Sequenz benutzen. Das Programm dazu sieht folgendermaßen aus:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("\033[31mHallo Welt!");
    return EXIT_SUCCESS;
}


Und schon erscheint der Text in rot. Die Escape-Sequenz befindet sich ganz am Anfang des Strings. Sie beginnt wie fast alle Escape-Sequenzen mit \033. Der darauf folgende Teil [31m bestimmt den Typ der Sequenz, er steht für "setze Textfarbe auf rot". Eine weitere Escape-Sequenz setzt den Textstil auf fett:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("\033[31mDieser Text ist rot!\n");
    printf("\033[1mDieser Text ist fett!\n");
    printf("\033[mDieser Text ist wieder normal!\n");
    return EXIT_SUCCESS;
}

Hier wurde neben der "Fett-Sequenz" noch eine weitere verwendet, die Escape-Sequenz für normalen Text. Sie setzt die Textfarbe un den Textstil wieder auf Standard zurück. Es gibt noch zahlreiche weitere Escape-Sequenzen, die die Text- oder Hintergrundfarbe verändern, den Cursor positionieren oder einen Signalton ausgeben können:

Escape-Sequenz Erklärung
\033[m Text wieder auf normal setzten
\033[0m Text wieder auf normal setzten
\033[1m Fetter Text
\033[4m Unterstrichener Text
\033[30m Schrift: Schwarz
\033[31m Schrift: Rot
\033[32m Schrift: Grün
\033[33m Schrift: Gelb
\033[34m Schrift: Blau
\033[35m Schrift: Violett
\033[36m Schrift: Türkis
\033[40m Schrifthintergrund: Schwarz
\033[41m Schrifthintergrund: Rot
\033[42m Schrifthintergrund: Grün
\033[43m Schrifthintergrund: Gelb
\033[44m Schrifthintergrund: Blau
\033[45m Schrifthintergrund: Violett
\033[46m Schrifthintergrund: Türkis
\033[G Positioniert den Cursor in Spalte
\033[H Positioniert den Cursor in Zeile
\007 Gibt einen Signalton aus