Colorir shell (bash)

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

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'Colorir shell (bash)', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!