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 | |