snippetcppCritical
How do I output coloured text to a Linux terminal?
Viewed 0 times
howoutputlinuxtextcolouredterminal
Problem
How do I print coloured characters to a Linux terminal that supports it?
How do I tell whether the terminal supports colour codes?
How do I tell whether the terminal supports colour codes?
Solution
You need to output ANSI colour codes. Note that not all terminals support this; if colour sequences are not supported, garbage will show up.
Example:
Here,
The codes for foreground and background colours are:
Additionally, you can use these:
See the table on Wikipedia for other, less widely supported codes.
To determine whether your terminal supports colour sequences, read the value of the
Example:
cout << "\033[1;31mbold red text\033[0m\n";Here,
\033 is the ESC character, ASCII 27. It is followed by [, then zero or more numbers separated by ;, and finally the letter m. The numbers describe the colour and format to switch to from that point onwards.The codes for foreground and background colours are:
foreground background
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47Additionally, you can use these:
reset 0 (everything back to normal)
bold/bright 1 (often a brighter shade of the same colour)
underline 4
inverse 7 (swap foreground and background colours)
bold/bright off 21
underline off 24
inverse off 27See the table on Wikipedia for other, less widely supported codes.
To determine whether your terminal supports colour sequences, read the value of the
TERM environment variable. It should specify the particular terminal type used (e.g. vt100, gnome-terminal, xterm, screen, ...). Then look that up in the terminfo database; check the colors capability.Code Snippets
cout << "\033[1;31mbold red text\033[0m\n";foreground background
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47reset 0 (everything back to normal)
bold/bright 1 (often a brighter shade of the same colour)
underline 4
inverse 7 (swap foreground and background colours)
bold/bright off 21
underline off 24
inverse off 27Context
Stack Overflow Q#2616906, score: 589
Revisions (0)
No revisions yet.