Equivalente "cor a" e "cor b" do Windows no terminal bash

Equivalente "cor a" e "cor b" do Windows no terminal bash

No sistema operacional Windows, posso digitar apenas color aou color bou color cetc. 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, tputnão vai notar, mas o resultado será insatisfatório. Você pode ver isso por

tput colors

Por padrão, tputusa o valor atual de $TERMpara selecionar uma descrição do terminal. Você pode substituir isso pela -Topção. Por exemplo, se você estiver usandoxterm(ao contrário de algum outro terminal definido TERMcomo "xterm"), você pode usar a xterm-16colordescrição do terminal conforme mostrado nesta captura de tela:

insira a descrição da imagem aqui

(Você provavelmente pode ver que a tputlinha 15 não teve nenhum efeito útil, o que é esperado já que10está fora da faixa de 8 cores).

A descrição do terminal, sejaxtermouxterm-16color(ouxterm-256color) explica tputcomo 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 tpute 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:

insira a descrição da imagem aqui

informação relacionada