Por que fazer isto ?
Ao personalizar a cor dos caracteres do prompt (ou de shell), você a tornará mais legível. Se você adotar uma convenção de cores, você pode transmitir sentido de acordo com a cor, o que evita ter um prompt muito longa.
Quais informações podem ser transmitidas pelas cores ?
Você pode afixar o prompt em verde para a primeira máquina host e em azul para outra, ou então em verde se o sistema não foi trocado, em amarelo se ele é um pouco e em vermelho se quase todos os recursos são utilizados. Ou mais simplesmente, você escolhe todos os recursos para um prompt
root, outro para uma
MC ...
As técnicas
Duas técnicas são possíveis. A mais utilizada (mas não a mais eficaz) consiste em inserir caracteres de escape (eles tem uma significação especial pelo interpretador). A cadeia seguinte afixa o prompt em azul:
$ PS1="\[\033[0;34m\][\u@\h]\[\033[0m\]"
Este método sofre dois inconvenientes : sua sintaxe é pouco legível, então sujeita a erros de digitação, e ela só é utilizável se a janela do terminal suporta a seqüência de escape ANSI, o que não é o caso para muitos terminais, nem de softwares de emulação de terminais? Adote antes a técnica que se baseia
tput.
Técnica de tput
Quando você colori o prompt (ou o shell) com
tput, suas definições são portátil para outros emuladores de terminais
tput sabe quais as seqüência de escape devem ser utilizadas, o que nos deixa livre desta busca enjoada.
$ BLUE=$ (tput setaf 4)
$ BLACK=$ (tput setaf 0)
$ PS1="\ [$BLUE\] \u@\h] \ [$BLACK\] "
Estudamos estas linhas:
A primeira linha de exemplos explora
tput para definir uma variável que contém caracteres para forçar a cor do primeiro plano em Azul (para afixar os próximas caracteres).A segunda linha faz o mesmo para o preto. É inútil conhecer as seqüência para todos os terminais, pois
tput gera um arquivo de correspondência das descrições para todos os terminais, arquivo que ele consulta para encontrar a seqüência apropriada para o terminal físico ou emulado. A terceira linha utiliza, enfim, as duas
$BLUE e
$BLACK na definição da variável de prompt
$PS1.
Mas
tput pode fazer bem mais que colorir os caracteres do prompt.
NB: Você pode afixar a lista completa pelos comandos
man tput et
man terminfo.
Tradução feita por Ana Spadari