Posso alterar a cor através da preferência, mas como posso alterar a cor do plano de fundo e do texto do terminal através da linha de comando?
command-line
color-management
TechJhola
fonte
fonte
dconf
. Eu escrevi uma resposta para uma pergunta semelhante antes: askubuntu.com/a/628129/295286\033[00;34mFOO\033[00m
Respostas:
Em determinados terminais compatíveis com XTerm / ANSI (como
xterm
egnome-terminal
), é possível 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) ; ambosxterm
egnome-terminal
suportam a paleta de 256 cores e a de 16777216 cores (RGB)); lembre-se de que o shell pode substituir isso (este é o caso, por exemplo, parazsh
).Aqui está um script para listar as cores na paleta de 256 cores, juntamente com o código de cores ANSI nos terminais compatíveis com XTerm / ANSI com suporte para paleta de 256 cores:
Dependendo se você deseja aplicar a cor ao primeiro plano ou ao plano de fundo, use um
<fg_bg>
valor de38
ou48
(respectivamente) no seguinte comando:Por exemplo, para definir a cor do primeiro plano (
<fg_bg>
=38
) como vermelho (<ANSI_color_code>
=196
) e a cor do plano de fundo (<fg_bg>
=48
) como preto (<ANSI_color_code>
=0
):É necessário redesenhar o prompt usando
printf '\e[K'
para que a cor do plano de fundo seja aplicada a toda a linha e para que a cor do primeiro plano seja aplicada ao cursor:O mesmo pode ser feito 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 de38
ou48
(respectivamente) no seguinte comando:Por exemplo, para definir a cor do primeiro plano (
<fg_bg>
=38
) como vermelho (<R>
=255
,<G>
=0
,<B>
=0
) e a cor do plano de fundo (<fg_bg>
=48
) como preto (<R>
=0
,<G>
=0
,<B>
=0
):Novamente, é necessário redesenhar o prompt usando
printf '\e[K'
para que a cor do plano de fundo seja aplicada a toda a linha e para que a cor do primeiro plano seja aplicada ao cursor:Usando um dos métodos, você pode usar
printf '\e[0m'
para redefinir todos os atributos:fonte
xterm
egnome-terminal
reconhecer a \ e [38/48; 2; R; G; sequências de escape verdadeira cor Bm; no entanto,xterm
arredonda a cor real para a mais próxima em sua paleta de 256 cores.gnome-terminal
exibe a cor exata exata fornecida na sequência de escape.xterm
), se o cursor estiver na extremidade direita (visualmente exibido na coluna mais à direita, mas logicamente já além disso, já que um caractere já foi impresso na coluna à direita), a última letra será removida. Veja, por exemplo, bugzilla.gnome.org/show_bug.cgi?id=740789 ou savannah.gnu.org/bugs/?36831 .Informações encontradas nesta página , excluindo a coluna de visualização:
As sequências são compostas pelo caractere Escape (geralmente representado por ”
^[
” ou ”<Esc>
”) seguido por outros caracteres: ”^[FCm
” (ondeFC
é 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 ao final de cada texto colorido.Nota 2: As cores de primeiro e segundo plano podem variar, dependendo da configuração do terminal e nem todas as cores são suportadas .
Definir / Redefinir
0
: Redefina / remova 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
: Pisca (não funciona na maioria dos terminais, exceto no XTerm):echo -e "Normal \e[5mBlink"
7
: Inverter / Inverter:echo -e "Normal \e[7minverted"
8
: Oculto (útil para informações confidenciais):echo -e "Normal \e[8mHidden Input"
21
: Redefinir / remover negrito / claro: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 piscada: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
: Black:echo -e "Default \e[30mBlack"
(melhor combinada 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
: Brancofundo
49
: Cor de fundo padrão (geralmente preto ou azul)40
: Preto41
: Vermelho42
: Verde43
: Amarelo44
: Azul45
: Magenta / Roxo46
: Ciano47
: Cinza claro (não use em primeiro plano branco)100
: Cinza escuro (não use com primeiro plano preto)101
: Luz vermelha102
: Verde claro (não use com o primeiro plano branco)103
: Amarelo claro (não use com o primeiro plano branco)104
: Azul claro (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 o primeiro plano claro)Para definir as cores de primeiro e segundo plano de uma só vez, use o formulário
echo -e "\e[S;FG;BGm"
. Por exemplo:echo -e "\e[1;97;41m"
(primeiro plano em negrito em fundo vermelho)Para 256 opções de cores, consulte a página de origem.
fonte
Mude as cores de forma incidental
Se se pretende alterar as cores de forma incidental :
Você pode usar o comando setterm :
das cores, você pode escolher (frente e fundo):
para mais opções:
Alterar as configurações do seu perfil (cor)
No 14.04, não encontrei uma opção
dconf
para definir as cores ou o terminal. No entanto, você pode usargconftool
Você primeiro precisa obter o nome do seu perfil:
Em seguida, para definir as cores do texto do seu perfil:
por exemplo, para definir a cor do texto como branco
O mesmo com a cor de fundo:
por exemplo, para definir a cor do plano de fundo como preto
Alternativamente, para definir o nome da (s) cor (es), você pode simplesmente usar
white
ougreen
, na mesma paleta que o comando setterm, por exemplo:fonte
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
o truque.gconftool-2
(para o Ubuntu 14.04 e talvez algumas versões seguintes), oudconf
ougsettings
em versões mais recentes de configurações de mudança Ubuntu gnome-terminal, e ter efeito imediato sobre todas as abas e janelas do mesmo perfil. Eu não acho que o OP estava procurando por esse comportamento.Os vários códigos de cores usados para obter impressões coloridas também podem ser usados para obter fundos coloridos :
Portanto, o seguinte comando torna meu fundo vermelho:
Dependendo do shell, do emulador de terminal etc., talvez você não precise do
-e
.fonte
Consulte a resposta da kos para mudar o primeiro plano ou o plano de fundo para uma cor específica da paleta, ou mesmo uma cor RGB direta em alguns terminais. O efeito dessa sequência dura até que uma cor diferente seja selecionada (ou revertida para o padrão).
Outra abordagem, suportada por alguns emuladores de terminal, é redefinir os valores exatos de RGB das cores de primeiro plano e de fundo padrão do terminal usando as seqüências de escape OSC 10/11:
É provável que dure muito mais tempo (até ser substituído por outro OSC 10/11 ou redefinido via OSC 110/111), mas, diferentemente da abordagem do dconf, isso ainda afeta apenas o terminal atual.
fonte