Puedo cambiar el color a través de la preferencia, 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?
command-line
color-management
TechJhola
fuente
fuente
dconf
. He escrito una respuesta a una pregunta similar antes: askubuntu.com/a/628129/295286\033[00;34mFOO\033[00m
Respuestas:
En ciertos terminales compatibles con XTerm / ANSI (como
xterm
ygnome-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) ; ambosxterm
ygnome-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, parazsh
)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:
Dependiendo de si desea aplicar el color al primer plano o al fondo, use un
<fg_bg>
valor de38
o48
(respectivamente) en el siguiente comando: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
):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 de38
o48
(respectivamente) en el siguiente comando: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
):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:fuente
xterm
ygnome-terminal
reconocen las secuencias de escape de color verdadero \ e [38/48; 2; R; G; Bm; sin embargo,xterm
redondea el color real al más cercano en su paleta de 256 colores.gnome-terminal
muestra el color verdadero exacto dado en la secuencia de escape.xterm
. ej. ) si el cursor está en el borde derecho (visualmente visualizado en la columna más a la derecha, pero lógicamente más allá de eso ya que un carácter ya se imprimió en la columna más a la derecha), esa última letra se elimina. Ver, por ejemplo, bugzilla.gnome.org/show_bug.cgi?id=740789 o savannah.gnu.org/bugs/?36831 .Información tal como se encuentra en esta 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
" (dondeFC
está uno de los números en la lista con viñetas a continuación).En
bash
, el Esccódigo puede ser uno 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 agregarlo 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 y no todos los colores son compatibles .
Establecer / Restablecer
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
: Dim:echo -e "Normal \e[2mDim"
4
: Subrayado:echo -e "Normal \e[4mUnderlined"
5
: Parpadeo (no funciona en la mayoría de las 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 dim: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 (generalmente 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
: BlancoAntecedentes
49
: Color de fondo predeterminado (generalmente negro o azul)40
: Negro41
: Rojo42
: Verde43
: Amarillo44
: Azul45
: Magenta / Púrpura46
: Cian47
: Gris claro (no usar con primer plano blanco)100
: Gris oscuro (no usar con primer plano negro)101
: Luz roja102
: Verde claro (no usar con primer plano blanco)103
: Amarillo claro (no usar 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, use su forma
echo -e "\e[S;FG;BGm"
. Por ejemplo:echo -e "\e[1;97;41m"
(primer plano en negrita blanco sobre fondo rojo)Para 256 opciones de color, consulte la página de origen.
fuente
Cambiar los colores de forma incidental
Si está destinado a cambiar los colores de forma incidental :
Puede usar el comando setterm :
de los colores, puede elegir (tanto en el frente como en el fondo):
para más opciones:
Cambiar la configuración de su perfil (color)
En 14.04, no encontré una opción para usar
dconf
para configurar los colores o el terminal. Sin embargo, puedes usargconftool
Primero debe obtener su nombre de perfil:
Luego, para configurar los colores de texto de su perfil:
por ejemplo, para establecer el color del texto en blanco
Lo mismo con el color de fondo:
por ejemplo, para establecer el color de fondo en negro
Alternativamente, para establecer el nombre de los colores, simplemente puede usar
white
ogreen
, desde la misma paleta que el comando setterm, por ejemplo:fuente
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
funcionó.gconftool-2
(para Ubuntu 14.04 y tal vez un par de lanzamientos siguientes), odconf
ogsettings
en las versiones más recientes de los ajustes de cambio Ubuntu gnome-terminal, y surtirá efecto inmediato en todas las pestañas y ventanas del mismo perfil. No creo que OP estuviera buscando este comportamiento.Los diversos códigos de color que se usaron para obtener resultados en color también se pueden usar para obtener fondos en color :
Por lo tanto, el siguiente comando convierte mi fondo en rojo:
Dependiendo del shell, el emulador de terminal, etc., es posible que no necesite el
-e
.fuente
Consulte la respuesta de kos para cambiar el primer plano o el fondo a un color particular de la paleta, o incluso a un color RGB directo en algunos terminales. El efecto de tal secuencia dura hasta que se selecciona un color diferente (o se revierte al predeterminado).
Otro enfoque, respaldado por algunos emuladores de terminal, es redefinir los valores RGB exactos de los colores de primer plano y fondo predeterminados del terminal utilizando las secuencias de escape OSC 10/11:
Es probable que esto dure mucho más tiempo (hasta que sea anulado por otro OSC 10/11 o restablecido a través de OSC 110/111), pero a diferencia del enfoque dconf, esto todavía afecta solo al terminal actual.
fuente