Colorir shell (bash)

Dezembro 2016



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

Veja também :
Este documento, intitulado « Colorir shell (bash) »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.