No sistema operacional Windows, posso digitar apenas color a
ou color b
ou color c
etc. para alterar temporariamente a cor da fonte no terminal.
Existe um comando para fazer isso no terminal bash?
Não quero fazer alterações permanentes, apenas a sessão aberta é suficiente.
Responder1
Você está se referindo a umcomandoque espera valores de 0 a f (ou seja, de 0 a 15 decimais). O comando análogo usariatput
:
tput setaf 10
("a" é hexdecimal para 10), para oprimeiro planocor e
tput setab 10
para ofundocor. Esses são separadosinformações do termocapacidades.
Esse exemplo pressupõe que a descrição do seu terminal tenha pelo menos 16 cores. Se tiver apenas 8, tput
não vai notar, mas o resultado será insatisfatório. Você pode ver isso por
tput colors
Por padrão, tput
usa o valor atual de $TERM
para selecionar uma descrição do terminal. Você pode substituir isso pela -T
opção. Por exemplo, se você estiver usandoxterm
(ao contrário de algum outro terminal definido TERM
como "xterm"), você pode usar a xterm-16color
descrição do terminal conforme mostrado nesta captura de tela:
(Você provavelmente pode ver que a tput
linha 15 não teve nenhum efeito útil, o que é esperado já que10
está fora da faixa de 8 cores).
A descrição do terminal, sejaxterm
ouxterm-16color
(ouxterm-256color
) explica tput
como fazer uma sequência de escape que pode ser escrita no terminal. Seu prompt do bash também pode enviar sequências de escape, configurando ou redefinindo cores. Se você chamou tput
e repetiu texto em um script de shell, poderá ver o texto colorido, enquanto os mesmos comandos (separados por prompts bash) podem não se comportar da mesma maneira. Além disso, alguns programas (como ls
) definem/reset cores. Existe apenas um estado de cor do terminal para compartilhar com esses diferentes aplicativos; os terminais não alternam automaticamente entre eles.
Testar um script de shell é mais previsível do que confiar nos detalhes do prompt do shell. Aqui está um exemplo
#!/bin/sh
case $TERM in
xterm*)
TERM=xterm-256color
;;
linux*)
TERM=linux-16color
;;
esac
export TERM
for p in $(seq 0 15)
do
tput setab $p
for q in $(seq 0 15)
do
tput setaf $q
printf '%x%x' $p $q
done
tput sgr0
printf '\n'
done
e uma captura de tela no xterm: