En ciertos terminales compatibles con XTerm / ANSI (como xterm
y gnome-terminal
), puede establecer colores usando una paleta más grande que la paleta predeterminada de 8/16 colores (por ejemplo, usando una paleta de 88 colores, 256 colores o 16777216 colores (RGB) ; ambos xterm
y gnome-terminal
admiten tanto la paleta de 256 colores como la de 16777216 colores (RGB)); tenga en cuenta que el shell podría anular esto (este es el caso, por ejemplo, para zsh
)
Aquí hay una secuencia de comandos para enumerar los colores en la paleta de 256 colores junto con su código de color ANSI en terminales XTerm / ANSI compatibles con un soporte de paleta de 256 colores:
#!/bin/bash
for((i=16; i<256; i++)); do
printf "\e[48;5;${i}m%03d" $i;
printf '\e[0m';
[ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done
Dependiendo de si desea aplicar el color al primer plano o al fondo, use un <fg_bg>
valor de 38
o 48
(respectivamente) en el siguiente comando:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Por ejemplo, para establecer el color de primer plano ( <fg_bg>
= 38
) en rojo ( <ANSI_color_code>
= 196
) y el color de fondo ( <fg_bg>
= 48
) en negro ( <ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
Es necesario volver a dibujar la solicitud utilizando printf '\e[K'
para que el color de fondo se aplique a toda la línea y para que el color de primer plano se aplique al cursor:
Lo mismo puede lograrse utilizando valores RGB en lugar de códigos de color ANSI en un terminal compatible; dependiendo de si desea aplicar el color al primer plano o al fondo, use un <fg_bg>
valor de 38
o 48
(respectivamente) en el siguiente comando:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Por ejemplo, para establecer el color de primer plano ( <fg_bg>
= 38
) en rojo ( <R>
= 255
, <G>
= 0
, <B>
= 0
) y el color de fondo ( <fg_bg>
= 48
) en negro ( <R>
= 0
, <G>
= 0
, <B>
= 0
):
printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'
Nuevamente, es necesario volver a dibujar la solicitud usando printf '\e[K'
para que el color de fondo se aplique a toda la línea y para que el color de primer plano se aplique al cursor:
Usando cualquiera de los métodos, puede usar printf '\e[0m'
para restablecer todos los atributos: