Exibe cores em um script de shell

2

Seria possível imprimir uma cor no meu terminal sem usar as cores dos meus .Xresources? Por exemplo, echo -e "3[32m Test" imprimirá "Teste", mas está na cor que defini como verde em meus .Xresources. Dito isto, como eu imprimiria uma cor que não está definida, como # FF0000 sem redefinir minha predefinição.

    
por Erich 04.04.2017 / 19:48

2 respostas

1

As cores em uma janela de terminal (shell) não têm relação real com as cores do arquivo .Xresources .

Se você quiser imprimir cores em uma janela de terminal (shell), considere seriamente o comando tput . Isso usa o banco de dados terminfo para gerar as seqüências de escape necessárias para obter cores (entre outras coisas).

Você pode man 5 terminfo e ler a seção sobre Color Handling . Aqui está a tabela de cores disponíveis:

Colour    Value RGB
black     0     0, 0, 0
red       1     max,0,0
green     2     0,max,0
yellow    3     max,max,0
blue      4     0,0,max
magenta   5     max,0,max
cyan      6     0,max,max
white     7     max,max,max

e você usa os comandos setaf (definir ANSI foreground) e setab (definir ANSI background) para defini-los. Use sgr0 para redefini-las depois.

Por exemplo

tput setaf 4    # Blue text
tput setab 3    # Yellow background
echo -n "This is blue text on a yellow background"
tput sgr0       # Reset colours
echo 
    
por 04.04.2017 / 20:02
0

Alguns emuladores de terminal suportam cores verdadeiras RGB diretas. Consulte o link para obter detalhes e exemplos de uso.

    
por 05.04.2017 / 00:05