Posso alterar a cor através de preferência, mas como posso alterar a cor de fundo e a cor do texto do terminal através da linha de comando?
Responder1
Em certos terminais compatíveis com XTerm/ANSI (como xterm
e gnome-terminal
), você pode definir cores usando uma paleta maior que a paleta padrão de 8/16 cores (por exemplo, usando uma paleta de 88 cores, 256 cores ou 16777216 cores (RGB) ; ambos xterm
e gnome-terminal
suportam a paleta de 256 cores e 16777216 cores (RGB); lembre-se de que o shell pode substituir isso (este é o caso, por exemplo, de zsh
).
Aqui está um script para listar as cores na paleta de 256 cores junto com seu código de cores ANSI em terminais compatíveis com XTerm/ANSI com suporte para 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 plano de fundo, use um <fg_bg>
valor de 38
ou 48
(respectivamente) no seguinte comando:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Por exemplo, para definir a cor de primeiro plano ( <fg_bg>
= 38
) como vermelho ( <ANSI_color_code>
= 196
) e a cor de fundo ( <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 de fundo seja aplicada a toda a linha e para que a cor de primeiro plano seja aplicada ao cursor:
A mesma coisa pode ser feita 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 plano de fundo, use um <fg_bg>
valor de 38
ou 48
(respectivamente) no seguinte comando:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Por exemplo, para definir a cor de primeiro plano ( <fg_bg>
= 38
) como vermelho ( <R>
= 255
, <G>
= 0
, <B>
= 0
) e a cor de fundo ( <fg_bg>
= 48
) como 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 de fundo seja aplicada a toda a linha e para que a cor de primeiro plano seja aplicada ao cursor:
Usando qualquer um dos métodos, você pode usar printf '\e[0m'
para redefinir todos os atributos:
Responder2
Informações encontradas emesta página, excluindo a coluna de visualização:
As sequências são compostas pelo caractere Escape (geralmente representado por ” ^[
” ou ” <Esc>
”) seguido por alguns outros caracteres: ” ^[FCm
” (onde FC
é um dos números na lista com marcadores abaixo).
Em bash
, o Esccódigo pode ser um dos seguintes:
\e
\033
(octal)\x1B
(hexadecimal)
Nota 1:A \e[0m
sequência " " remove todos os atributos (formatação e cores). Pode ser uma boa ideia adicioná-lo no final de cada texto colorido.
Nota 2:As cores de primeiro plano e de fundo podem variar, dependendo da configuração do terminal enem todas as cores são suportadas.
Definir/Redefinir
0
: redefinir/remover todos os atributos modificadores, de primeiro plano e de fundo:echo -e "\e[0mNormal Text"
1
: Negrito/Brilhante:echo -e "Normal \e[1mBold"
2
: Escuro:echo -e "Normal \e[2mDim"
4
: Sublinhado:echo -e "Normal \e[4mUnderlined"
5
: Pisca (não funciona na maioria dos terminais, exceto XTerm):echo -e "Normal \e[5mBlink"
7
: Reverter/Inverter: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 dim:echo -e "Normal \e[2mDim \e[22mNormal"
24
: Redefinir/remover sublinhado:echo -e "Normal \e[4mUnderlined \e[24mNormal"
25
: Redefinir/Remover piscar:echo -e "Normal \e[5mBlink \e[25mNormal"
27
: Redefinir/remover reversão/inversão: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
: Verde33
: Amarelo34
: Azul35
: Magenta/Roxo36
: Ciano37
: Cinza claro90
: Cinza escuro91
: Luz vermelha92
: Luz verde93
: Luz amarela94
: Azul claro95
: Magenta Claro/Rosa96
: Ciano claro97
: Branco
Fundo
49
: Cor de fundo padrão (geralmente preto ou azul)40
: Preto41
: Vermelho42
: Verde43
: Amarelo44
: Azul45
: Magenta/Roxo46
: Ciano47
: Cinza Claro (não use com primeiro plano branco)100
: Cinza Escuro (não use com primeiro plano preto)101
: Luz vermelha102
: Verde Claro (não use com primeiro plano branco)103
: Amarelo Claro (não use com primeiro plano branco)104
: Azul Claro (não use com primeiro plano amarelo claro)105
: Magenta Claro/Rosa (não use com primeiro plano claro)106
: Ciano claro (não use com primeiro plano branco)107
: Branco (não use com primeiro plano claro)
Para definir as cores de primeiro plano e de fundo de uma só vez, use o formulário echo -e "\e[S;FG;BGm"
. Por exemplo: echo -e "\e[1;97;41m"
(primeiro plano branco em negrito sobre fundo vermelho)
Para 256 opções de cores, consulte a página de origem.
Responder3
Alterar as cores acidentalmente
Se for para alterar as cores acidentalmente:
Você pode usar odefinir prazocomando:
setterm -term linux -back <background_colour> -fore <text_color> -clear
entre as cores, você pode escolher (frente e fundo):
black|blue|green|cyan|red|magenta|yellow|white|default
para mais opções:
setterm -help
Alterar as configurações do seu perfil (cor)
No 14.04, não encontrei opção de usar dconf
para definir as cores ou o terminal. No entanto, você pode usargconftool
Primeiro você precisa obter o nome do seu perfil:
gconftool-2 --get /apps/gnome-terminal/global/profile_list
Em seguida, para definir as cores do 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 como 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 para preto
Alternativamente, para definir o nome da(s) cor(es), você pode simplesmente usar white
ou green
, da mesma paleta do comando setterm, por exemplo:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
Responder4
Os vários códigos de cores usados para obter resultados coloridos também podem ser usados para obterfundos coloridos:
40 black
41 red
42 green
43 yellow
44 blue
45 magenta
46 cyan
47 white
Portanto, o seguinte comando deixa meu fundo vermelho:
$ echo -e '\e[0;41m'
Dependendo do shell, do emulador de terminal, etc., talvez você não precise do arquivo -e
.