ANSI terminal color escapes can be done with \033[...m
in most programming languages. (You may need to do \e
or \x1b
in some languages)
What has always seemed odd to me is how they start with \033[
, but they end in m
Is there some historical reason for this (perhaps ]
was mapped to the slot that is now occupied by m
in the ASCII table?) or is it an arbitrary character choice?
It's not completely arbitrary, but follows a scheme laid out by committees, and documented in ECMA-48 (the same as ISO 6429). Except for the initial Escape character, the succeeding characters are specified by ranges.
While the pair Escape[
is widely used (this is called the control sequence introducer CSI), there are other control sequences (such as Escape]
, the operating system command OSC). These sequences may have parameters, and a final byte.
In the question, using CSI, the m
is a final byte, which happens to tell the terminal what the sequence is supposed to do. The parameters if given are a list of numbers. On the other hand, with OSC, the command-type is at the beginning, and the parameters are less constrained (they might be any string of printable characters).