What is this \u001b[9... syntax of choosing what color text appears on console, and how can I add more colors?

colors, console, node.js, windows-console

Solution

Those are ANSI terminal escape codes. Specifically, they're "select graphic rendition" (SGR) escape codes, which consist of:

- the "command sequence introducer", consisting of the characters `\x1B` (ESC) and `[`,

- one or more numeric commands, separated by semicolons, and

- the letter `m`, ending the code and indicating that this is an SGR code.

There are many possible numeric commands (and many other escape codes besides SGR), but the most relevant ones are:

- 30–37: set text color to one of the colors 0 to 7,

- 40–47: set background color to one of the colors 0 to 7,

- 39: reset text color to default,

- 49: reset background color to default,

- 1: make text bold / bright (this is the standard way to access the bright color variants),

- 22: turn off bold / bright effect, and

- 0: reset all text properties (color, background, brightness, etc.) to their default values.

Thus, for example, one could select bright purple text on a green background (eww!) with the code `\x1B[35;1;42m`.

Problem

I was messing around with debug and colors.js to get more colors than the limited 4-6 colors but I'm stuck at figuring out this coloring syntax ``` args[0] = ' \u001b[9' + c + 'm' + name + ' ' + '\u001b[3' + c + 'm\u001b[90m' + args[0] + '\u001b[3' + c + 'm' + ' +' + exports.humanize(ms) + '\u001b[0m'; ``` ``` 'blue' : ['\x1B[34m', '\x1B[39m'], 'cyan' : ['\x1B[36m', '\x1B[39m'], 'green' : ['\x1B[32m', '\x1B[39m'], 'magenta' : ['\x1B[35m', '\x1B[39m'], 'red' : ['\x1B[31m', '\x1B[39m'], 'yellow' : ['\x1B[33m', '\x1B[39m'], ``` I know windows console allows more colors than just those six, as `color /?` shows ``` 0 = Black 8 = Gray 1 = Blue 9 = Light Blue 2 = Green A = Light Green 3 = Aqua B = Light Aqua 4 = Red C = Light Red 5 = Purple D = Light Purple 6 = Yellow E = Light Yellow 7 = White F = Bright White ``` How do I go about understanding this syntax and adding the extra colors that windows has to offer?

Original source