Puedo cambiar el color mediante preferencias, pero ¿cómo puedo cambiar el color de fondo y el color del texto del terminal a través de la línea de comando?
Respuesta1
En ciertos terminales compatibles con XTerm/ANSI (como xterm
y gnome-terminal
), puede configurar 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
admite la paleta de 256 colores y la de 16777216 colores (RGB); Tenga en cuenta que el shell podría anular esto (este es el caso, por ejemplo, de 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 compatibles con XTerm/ANSI con 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 el mensaje 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:
Se puede lograr lo mismo 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 el mensaje 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:
Utilizando cualquiera de los métodos, puede utilizar printf '\e[0m'
para restablecer todos los atributos:
Respuesta2
Información encontrada enesta página, excluyendo la columna de vista previa:
Las secuencias se componen del carácter de escape (a menudo representado por " ^[
" o " <Esc>
" ) seguido de algunos otros caracteres: " ^[FCm
" (donde FC
está uno de los números en la lista con viñetas a continuación).
En bash
, el Esccódigo puede ser cualquiera de los siguientes:
\e
\033
(octal)\x1B
(hexadecimal)
Nota 1:La \e[0m
secuencia " " elimina todos los atributos (formato y colores). Puede ser una buena idea añadirlo al final de cada texto coloreado.
Nota 2:Los colores de primer plano y de fondo pueden variar, dependiendo de la configuración del terminal yno todos los colores son compatibles.
Establecer/Reiniciar
0
: Restablecer/eliminar todos los atributos modificadores, de primer plano y de fondo:echo -e "\e[0mNormal Text"
1
: Negrita/Brillante:echo -e "Normal \e[1mBold"
2
: Oscuro:echo -e "Normal \e[2mDim"
4
: Subrayada:echo -e "Normal \e[4mUnderlined"
5
: Parpadea (no funciona en la mayoría de terminales excepto XTerm):echo -e "Normal \e[5mBlink"
7
: Invertir/Invertir:echo -e "Normal \e[7minverted"
8
: Oculto (útil para información confidencial):echo -e "Normal \e[8mHidden Input"
21
: Restablecer/Eliminar negrita/brillante:echo -e "Normal \e[1mBold \e[21mNormal"
22
: Restablecer/Eliminar atenuación:echo -e "Normal \e[2mDim \e[22mNormal"
24
: Restablecer/Eliminar subrayado:echo -e "Normal \e[4mUnderlined \e[24mNormal"
25
: Restablecer/Eliminar parpadeo:echo -e "Normal \e[5mBlink \e[25mNormal"
27
: Restablecer/Eliminar invertir/invertir:echo -e "Normal \e[7minverted \e[27mNormal"
28
: Restablecer/Eliminar oculto:echo -e "Normal \e[8mHidden \e[28mNormal"
Primer plano
39
: Predeterminado (normalmente verde, blanco o gris claro):echo -e "Default \e[39mDefault"
30
: Negro:echo -e "Default \e[30mBlack"
(mejor combinado con un color de fondo:echo -e "Default \e[30;107mBlack on white"
)31
: Rojo (no usar con fondo verde)32
: Verde33
: Amarillo34
: Azul35
: Magenta/Púrpura36
: cian37
: Gris claro90
: Gris oscuro91
: Luz roja92
: Verde claro93
: Amarillo claro94
: Azul claro95
: Magenta claro/Rosa96
: Cian claro97
: Blanco
Fondo
49
: Color de fondo predeterminado (normalmente negro o azul)40
: Negro41
: Rojo42
: Verde43
: Amarillo44
: Azul45
: Magenta/Púrpura46
: cian47
: Gris claro (no utilizar con primer plano blanco)100
: Gris oscuro (no utilizar con primer plano negro)101
: Luz roja102
: Verde claro (no usar con primer plano blanco)103
: Amarillo claro (no utilizar con primer plano blanco)104
: Azul claro (no usar con primer plano amarillo claro)105
: Magenta claro/Rosa (no usar con primer plano claro)106
: Cian claro (no usar con primer plano blanco)107
: Blanco (no usar con primer plano claro)
Para configurar los colores de primer plano y de fondo a la vez, utilice otro formulario echo -e "\e[S;FG;BGm"
. Por ejemplo: echo -e "\e[1;97;41m"
(primer plano blanco en negrita sobre fondo rojo)
Para ver 256 opciones de color, consulte la página de origen.
Respuesta3
Cambiar los colores de forma incidental.
Si está destinado a cambiar de color de forma incidental:
Puedes usar elfijadordominio:
setterm -term linux -back <background_colour> -fore <text_color> -clear
De los colores, puede elegir entre (tanto de frente como de fondo):
black|blue|green|cyan|red|magenta|yellow|white|default
para más opciones:
setterm -help
Cambia la configuración de tu perfil (color)
En 14.04, no encontré una opción para dconf
configurar los colores o el terminal. Sin embargo puedes usargconftool
Primero necesitas obtener tu nombre de perfil:
gconftool-2 --get /apps/gnome-terminal/global/profile_list
Luego, para configurar los colores del texto de su perfil:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
por ejemplo, para establecer el color del texto en blanco
Lo mismo con el color de fondo:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
por ejemplo, para establecer el color de fondo en negro
Alternativamente, para establecer el nombre de los colores, simplemente puede usar white
o green
, desde la misma paleta que el comando setterm, por ejemplo:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
Respuesta4
Los diversos códigos de color que se utilizaron para obtener resultados en color también se pueden utilizar para obtenerfondos de colores:
40 black
41 red
42 green
43 yellow
44 blue
45 magenta
46 cyan
47 white
Por lo tanto, el siguiente comando vuelve mi fondo rojo:
$ echo -e '\e[0;41m'
Dependiendo del shell, el emulador de terminal, etc., es posible que no necesite el archivo -e
.