90 votos

¿Cambiando el color del texto y el fondo de la terminal?

Puedo cambiar el color a través de las preferencias, pero ¿cómo puedo cambiar el color de fondo y el color del texto de la terminal a través de la línea de comandos?

0 votos

¿permanentemente o por casualidad?

0 votos

También puede utilizar dconf . Ya he escrito una respuesta a una pregunta similar: askubuntu.com/a/628129/295286

0 votos

\033[00;34mFOO\033[00m

65voto

ieplugin Puntos 216

En algunos terminales compatibles con XTerm/ANSI (como xterm y gnome-terminal ), puede establecer los colores utilizando una paleta mayor que la predeterminada de 8/16 colores (por ejemplo, utilizando 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 puede anular esto (es el caso, por ejemplo, de zsh ).

Aquí hay un script para listar los colores de 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

screenshot1

screenshot

Dependiendo de si quiere aplicar el color al primer plano o al fondo, utilice 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 ) a rojo ( <ANSI_color_code> = 196 ) y el color de fondo ( <fg_bg> = 48 ) a negro ( <ANSI_color_code> = 0 ):

printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'

screenshot3

Es necesario volver a dibujar el aviso 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:

screenshot4

Lo mismo puede conseguirse utilizando valores RGB en lugar de códigos de color ANSI en un terminal compatible; dependiendo de si quiere aplicar el color al primer plano o al fondo, utilice 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 ) a rojo ( <R> = 255 , <G> = 0 , <B> = 0 ) y el color de fondo ( <fg_bg> = 48 ) a 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'

screenshot5

De nuevo, es necesario volver a dibujar el aviso 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:

screenshot6

Utilizando cualquiera de los dos métodos, puede utilizar printf '\e[0m' para restablecer todos los atributos:

screenshot7

1 votos

Ambos xterm y gnome-terminal reconocer el \e [38/48;2;R;G;Bm secuencias de escape de color verdadero; sin embargo, xterm redondea el color actual al más cercano en su paleta de 256 colores. gnome-terminal muestra el color real exacto dado en la secuencia de escape.

2 votos

\e K es peligroso; en algunos emuladores (por ejemplo xterm ) si el cursor se encuentra en el extremo derecho (visualmente se muestra en la columna más a la derecha, pero lógicamente ya está más allá, ya que se imprimió un carácter en la columna más a la derecha), esa última letra se elimina. Véase, por ejemplo bugzilla.gnome.org/show_bug.cgi?id=740789 o savannah.gnu.org/bugs/?36831 .

0 votos

Me corrijo: Si emites \e K al principio de la línea (al principio del prompt, en lugar de al final) entonces por supuesto que es seguro. (Sin embargo, no funcionará con un prompt o comando multilínea).

44voto

David Brown Puntos 101

La información se encuentra en esta página excluyendo la columna de vista previa:

Las secuencias están compuestas por el carácter Escape (a menudo representado por " ^[ " o " <Esc> ") seguido de otros caracteres: " ^[FCm "(donde FC es uno de los números de la lista con viñetas que aparece a continuación).

En bash El Esc El código puede ser cualquiera de los siguientes:

  1. \e
  2. \033 (octal)
  3. \x1B (hexadecimal)

Nota 1: El " \e[0m " elimina todos los atributos (formato y colores). Puede ser una buena idea añadirla al final de cada texto coloreado.

Nota 2: Los colores de primer y segundo plano pueden variar, dependiendo de la configuración del terminal y no se admiten todos los colores .

Ajustar/Reajustar

  • 0 : Restablece/elimina todos los atributos de modificador, primer plano y fondo: echo -e "\e[0mNormal Text"
  • 1 : Negrita/Brillo: 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 los terminales, excepto XTerm): echo -e "Normal \e[5mBlink"
  • 7 : Invertir/Invertir: echo -e "Normal \e[7minverted"
  • 8 : Oculto (útil para la información sensible): 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 el subrayado: echo -e "Normal \e[4mUnderlined \e[24mNormal"
  • 25 : Parpadeo de Reinicio/Eliminación: echo -e "Normal \e[5mBlink \e[25mNormal"
  • 27 : Restablecer/retirar la marcha atrás/inversión: echo -e "Normal \e[7minverted \e[27mNormal"
  • 28 : Restablecer/Eliminar oculto: echo -e "Normal \e[8mHidden \e[28mNormal"

Primer plano

  • 39 : Por defecto (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 utilizar con fondo verde)
  • 32 : Verde
  • 33 : Amarillo
  • 34 : Azul
  • 35 : Magenta/Morado
  • 36 : Cyan
  • 37 : Gris claro
  • 90 : Gris Oscuro
  • 91 : Rojo claro
  • 92 : Verde claro
  • 93 : Amarillo claro
  • 94 : Azul claro
  • 95 : Magenta claro/rosa
  • 96 : Cian claro
  • 97 : Blanco

Antecedentes

  • 49 : Color de fondo por defecto (normalmente negro o azul)
  • 40 : Negro
  • 41 : Rojo
  • 42 : Verde
  • 43 : Amarillo
  • 44 : Azul
  • 45 : Magenta/Morado
  • 46 : Cyan
  • 47 : Gris claro (no utilizar con un primer plano blanco)
  • 100 : Gris oscuro (no utilizar con un primer plano negro)
  • 101 : Rojo claro
  • 102 : Verde claro (no utilizar con un primer plano blanco)
  • 103 : Amarillo claro (no utilizar con un primer plano blanco)
  • 104 : Azul claro (no utilizar con un primer plano amarillo claro)
  • 105 : Magenta/rosa claro (no utilizar con un primer plano claro)
  • 106 : Cian claro (no utilizar con un primer plano blanco)
  • 107 : Blanco (no utilizar con un primer plano claro)

Para establecer los colores de primer y segundo plano a la vez, utilice la forma echo -e "\e[S;FG;BGm" . Por ejemplo: echo -e "\e[1;97;41m" (primer plano blanco en negrita sobre fondo rojo)

Para las opciones de 256 colores, consulte la página de la fuente.

0 votos

Para mí en macOS, el 21 no desactiva la negrita pero el 22 desactiva tanto la negrita como la atenuación.

31voto

Jacob Vlijm Puntos 24137

Cambiar los colores de forma incidental

Si está destinado a cambiar de color de forma incidental :

Puede utilizar el setterm comando:

setterm -term linux -back <background_colour> -fore <text_color> -clear

de los colores que puede elegir (tanto de frente como de fondo):

black|blue|green|cyan|red|magenta|yellow|white|default

para más opciones:

setterm -help

Cambiar la configuración del perfil (color)

En 14.04, no encontré una opción para usar dconf para fijar los colores o el terminal. Sin embargo, puede utilizar gconftool

  • Primero tienes que conseguir tu nombre de perfil:

    gconftool-2 --get /apps/gnome-terminal/global/profile_list
  • A continuación, para establecer 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, puede utilizar simplemente 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

1 votos

Deberían ser guiones dobles en el comando setterm inicial.

0 votos

Funcionó en 14.04, pero no en 16.04 (beta; no estoy seguro de que sea la razón)... Aún así, dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/backgroun‌​d-color "'rgb(0,0,0)'" hizo el truco.

0 votos

No funciona en ubuntu 1704, se ve mal

5voto

muru Puntos 43315

Los diferentes códigos de color que se utilizan para obtener una salida de color también se pueden utilizar para obtener fondos de color :

40  black
41  red
42  green
43  yellow
44  blue
45  magenta
46  cyan
47  white

Por lo tanto, el siguiente comando convierte mi fondo en rojo:

$ echo -e '\e[0;41m'

Dependiendo del Shell, del emulador de terminal, etc., puede que no necesites el -e .

4voto

MSS Puntos 121

Consulte la respuesta de kos para cambiar el primer plano o el fondo a un color concreto de la paleta, o incluso a un color RGB directo en algunos terminales. El efecto de dicha secuencia dura hasta que se selecciona un color diferente (o se vuelve al predeterminado).

Otro enfoque, soportado por algunos emuladores de terminal, es redefinir los valores RGB exactos del terminal por defecto colores de primer y segundo plano utilizando las secuencias de escape OSC 10 / 11:

echo -ne '\e]10;#123456\e\\'  # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\'  # set default background to #abcdef

Es probable que esto dure mucho más tiempo (hasta que sea anulado por otro OSC 10 / 11 o reiniciado a través de OSC 110 / 111), pero a diferencia del enfoque dconf, esto sigue afectando sólo al terminal actual.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: