Alterar cor do texto e plano de fundo do terminal?

49

Eu posso alterar a cor por meio da preferência, mas como posso alterar a cor do plano de fundo e a cor do texto do terminal por meio da linha de comando?

    
por TechJhola 09.12.2014 / 06:11

4 respostas

32

Em certos terminais compatíveis com XTerm / ANSI (como xterm e gnome-terminal ), você pode definir cores usando uma paleta maior do que a paleta padrão de 8/16 cores (por exemplo, usando 88 cores, 256 cores ou paleta 16777216 cores (RGB); os xterm e gnome-terminal suportam as paletas 256 cores e 16777216 cores (RGB); Lembre-se que o shell pode substituir isso (este é o caso, por exemplo, para zsh ).

Aqui está um script para listar as cores na paleta de 256 cores junto com seu código de cor ANSI em terminais compatíveis com XTerm / ANSI com um suporte de paleta de 256 cores:

#!/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

Dependendo se você deseja aplicar a cor ao primeiro plano ou ao segundo plano, use um valor <fg_bg> de 38 ou 48 (respectivamente) no seguinte comando:

printf '\e[<fg_bg>;5;<ANSI_color_code>m'

Por exemplo, para definir a cor do primeiro plano ( <fg_bg> = 38 ) como vermelho ( <ANSI_color_code> = 196 ) e a cor do segundo plano ( <fg_bg> = 48 ) como preto ( <ANSI_color_code> = 0 ):

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

É necessário redesenhar o prompt usando printf '\e[K' para que a cor do plano de fundo seja aplicada à linha inteira e para que a cor do primeiro plano seja aplicada ao cursor:

A mesma coisa pode ser realizada usando valores RGB em vez de códigos de cores ANSI em um terminal compatível; dependendo se você deseja aplicar a cor ao primeiro plano ou ao segundo plano, use um valor <fg_bg> de 38 ou 48 (respectivamente) no seguinte comando:

printf '\e[<fg_bg>;2;<R>;<G>;<B>m'

Por exemplo, para definir a cor do primeiro plano ( <fg_bg> = 38 ) como vermelho ( <R> = 255 , <G> = 0 , <B> = 0 ) e o fundo cor ( <fg_bg> = 48 ) para preto ( <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'

Novamente, é necessário redesenhar o prompt usando printf '\e[K' para que a cor do plano de fundo seja aplicada à linha inteira e para que a cor do primeiro plano seja aplicada ao cursor:

Usando os métodos, você pode usar printf '\e[0m' para redefinir todos os atributos:

    
por kos 05.10.2015 / 14:00
27

Altere as cores de maneira incidental

Se é para mudar as cores numa base incidental :

Você pode usar o comando setterm :

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

das cores, você pode escolher entre (frente e fundo):

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

para mais opções:

setterm -help

Altere suas configurações de perfil (cor)

Em 14.04, não encontrei uma opção para usar dconf para definir as cores ou o terminal. Você pode, no entanto, usar gconftool

  • Primeiro, você precisa do nome do seu perfil:

    gconftool-2 --get /apps/gnome-terminal/global/profile_list
    
  • Em seguida, para definir as cores de texto do seu perfil:

    gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
    

    por exemplo, para definir a cor do texto para branco

    O mesmo com a cor de fundo:

    gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
    

    por exemplo, para definir a cor de fundo como preta

Como alternativa, para definir o nome da cor (s), você pode simplesmente usar white ou green , da mesma paleta como o comando setterm, por exemplo:.

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
    
por Jacob Vlijm 09.12.2014 / 07:50
23

Informações como encontrado em desta página , excluindo coluna antevisão:

As seqüências são compostos do caractere de escape (muitas vezes representado por “ ^[ ” ou “ <Esc> ”), seguido por alguns outros personagens: ‘ <Esc>[FCm ’ (onde FC é um dos números no marcador lista abaixo).

Em bash , o código Esc pode ser um dos seguintes:

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

Nota 1: A seqüência " \e[0m " remove todos os atributos (formatação e cores). Pode ser uma boa ideia adicioná-lo no final de cada texto colorido.

Nota 2: do primeiro plano e cores de fundo pode variar, dependendo da configuração do terminal e tudo as cores são suportadas .

Definir / Reiniciar

  • 0 : redefinir / remover todos os atributos de modificador, primeiro plano e plano de fundo: echo -e "\e[0mNormal Text"
  • 1 : negrito / brilhante: echo -e "Normal \e[1mBold"
  • 2 : Dim: echo -e "Normal \e[2mDim"
  • 4 : sublinhado: echo -e "Normal \e[4mUnderlined"
  • 5 : Blink (não funciona na maioria dos terminais, exceto no XTerm): echo -e "Normal \e[5mBlink"
  • 7 : reverso / invertido: echo -e "Normal \e[7minverted"
  • 8 : oculto (útil para informações confidenciais): echo -e "Normal \e[8mHidden Input"
  • 21 : redefinir / remover negrito / brilhante: echo -e "Normal \e[1mBold \e[21mNormal"
  • 22 : redefinir / remover escurecimento: echo -e "Normal \e[2mDim \e[22mNormal"
  • 24 : redefinir / remover sublinhado: echo -e "Normal \e[4mUnderlined \e[24mNormal"
  • 25 : redefinir / remover a intermitência: echo -e "Normal \e[5mBlink \e[25mNormal"
  • 27 : redefinir / remover reverso / invertido: echo -e "Normal \e[7minverted \e[27mNormal"
  • 28 : redefinir / remover oculto: echo -e "Normal \e[8mHidden \e[28mNormal"

Primeiro Plano

  • 39 : padrão (geralmente verde, branco ou cinza claro): echo -e "Default \e[39mDefault"
  • 30 : preto: echo -e "Default \e[30mBlack" (melhor combinado com uma cor de fundo: echo -e "Default \e[30;107mBlack on white" )
  • 31 : Vermelho (não use com fundo verde)
  • 32 : verde
  • 33 : amarelo
  • 34 : azul
  • 35 : magenta / roxo
  • 36 : ciano
  • 37 : cinza claro
  • 90 : cinza escuro
  • 91 : vermelho claro
  • 92 : verde claro
  • 93 : amarelo claro
  • 94 : azul claro
  • 95 : magenta claro / rosa
  • 96 : ciano claro
  • 97 : branco

Antecedentes

  • 49 : cor de fundo padrão (geralmente preto ou azul)
  • 40 : preto
  • 41 : vermelho
  • 42 : verde
  • 43 : amarelo
  • 44 : azul
  • 45 : magenta / roxo
  • 46 : ciano
  • 47 : cinza claro (não use com o primeiro plano branco)
  • 100 : cinza escuro (não use com o primeiro plano preto)
  • 101 : vermelho claro
  • 102 : Light Green (não use com o primeiro plano branco)
  • 103 : amarelo claro (não use com o primeiro plano branco)
  • 104 : Light Blue (não use com o primeiro plano amarelo claro)
  • 105 : Magenta Claro / Rosa (não use com o primeiro plano claro)
  • 106 : ciano claro (não use com o primeiro plano branco)
  • 107 : Branco (não use com primeiro plano claro)

Para definir as cores de primeiro plano e plano de fundo de uma vez, use o formulário echo -e "\e[S;FG;BGm" . Por exemplo: echo -e "\e[1;97;41m" (primeiro plano em negrito no fundo vermelho)

Para 256 opções de cores, consulte a página de origem.

    
por Agi Hammerthief 09.12.2014 / 14:43
5

Os vários códigos de cores usados para obter a saída colorida também podem ser usados para obter planos de fundo coloridos :

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

Portanto, o comando a seguir transforma meu plano de fundo em vermelho:

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

Dependendo do shell, do emulador de terminal, etc., talvez você não precise do -e .

    
por muru 09.12.2014 / 08:17