I am trying to write a program that runs a console program like gcc and displays its output in color. I used openpty
instead of pipe
to pretend to be a character device and now get ANSI escape codes that carry color information. I tried some programs and they sometimes give me the code CSI [ 49 m
. Both wikipedia and the xterm escape code documentation (search for Ps = 4 9
) agree that code CSI [ 49 m
means that I should be using the default background color.
However, debian's xterm and zsh as well as ubuntu's linux console disagree.
printf '\033[\061mTest\n\033[\060m'
executed in a console like xterm should be printing "Test" with the default background color (\033
is escape and escape + [
make a CSI (Control Sequence Introducer) and \061
is octal which is 49 decimal), but it actually prints "Test" in bold (and the \061
at the end seems to mean "not bold anymore" but is documented neither on wikipedia nor in the xterm color code documentation). All consoles mentioned above agree on this.
There is a list of color codes for various consoles and standards, but none of them list CSI 49 m
to mean "bold".
Where does this inconsistency come from? Where can I find a list of color codes that correspond to what any of xterm, zsh or the linux console are using?