Como personalizar o prompt da linha de comando no UNIX/Linux — parte 3 – Elias Praciano
Categories
Linux Tutoriais UNIX

Como personalizar o prompt da linha de comando no UNIX/Linux — parte 3

Como adicionar cores ANSI e efeitos especiais para dar destaque às informações do prompt da linha de comando no Bash.

Neste texto vou mostrar como é fácil aplicar cores às informações exibidas no prompt da linha de comando do seu terminal.
Esta é a terceira parte de uma série de artigos sobre como configurar o prompt do seu emulador de terminal e serve para todos os Linux e UNIX (o que inclui os BSD e o MacOS), desde que estejam usando o Bash como emulador — por causa disto, talvez dê para incluir o Windows também nesta história.
Como, neste momento, não tenho um Mac em mãos, só pude testar os exemplos dados no Linux (Fedora 25, Debian 9 e OpenSUSE Tumbleweed).
Se você tiver alguma dúvida, durante a leitura, dê uma olhada nos links ou nos outros artigos (parte 1 e parte 2) desta série — tenho certeza de que a resposta estará em um destes lugares.

A tabela de cores

Use a relação de códigos de efeitos e cores, abaixo, para alterar os exemplos de prompt.

  • 0 —  efeito nenhum
  • 1 —  efeito negrito ou cor mais forte. Transforma a cor preta em cinza em alguns terminais
  • 2 —  efeito esmaecido ou mais fraco. Transforma a cor branca em cinza em alguns terminais
  • 3 —  efeito itálico
  • 4 —  efeito sublinhado
  • 7 —  efeito de inversão das cores
  • No tempo dos monitores monocromáticos, em fósforo, os efeitos eram muito úteis para ajudar a diferenciar tipos de arquivos e tornar mais legíveis os textos de interação com os usuários em scripts.
    Segue a lista de cores de frente ou foreground:

  • 30 —  preto
  • 31 —  vermelho
  • 32 —  verde
  • 33 —  amarelo
  • 34 —  azul
  • 35 —  púrpura
  • 36 —  ciano
  • 37 —  branco
  • Segue a lista de cores de fundo ou background:

  • 40 —  preto
  • 41 —  vermelho
  • 42 —  verde
  • 43 —  amarelo
  • 44 —  azul
  • 45 —  púrpura
  • 46 —  ciano
  • 47 —  branco

Os primeiros códigos (referentes aos efeitos) não irão funcionar em todos os emuladores de terminal. Portanto, não espere muito deles.
Você também pode encontrar uma tabela de cores no site do Mewbie: http://www.mewbies.com/geek_fun_files/color_scripts/color_scripts_codes.png.
ansi color codes table

Experimente as cores

As relações de cores ANSI podem ser usados em várias ocasiões. Quando estiver fazendo um script, na maioria das linguagens é possível colorir o texto de saída, para interagir com o seu usuário.
Você pode usar este código Bash, para experimentar as cores e os efeitos dados acima:

# as letras do texto na cor ciano ou cyan
echo -e "\e[36mQue cor é esta?"

Se quiser alterar apenas a cor de fundo…

# cor de fundo vermelho
echo -e "\e[41mQue cor é esta?"

Para aplicar o efeito negrito:

# vermelho forte
echo -e "\e[1;31mQue cor é esta?"

Aplique o efeito itálico; cor de frente ciano; cor de fundo amarelo:

echo -e "\e[3;36;43mQue cor é esta?"

Eu sei que dá para ficar brincando horas com isso aí… mas a gente precisa voltar a falar do command prompt.

Como aplicar cores ao prompt da linha de comando

Baseado nos exemplos dos artigos anteriores, aplique as cores, inserindo um dos códigos dos exemplos acima, tal como destacado abaixo:

PS1='\[\e[3;36m\][\d, \T]\n\[\e[0;33m\]\u@\h\[\e[1;36m\][ \w ] '

Note que a diferença é que o código de cores do PS1 precisa estar entre os caracteres “ \[\e[ ” e “ \] “.
Sinta-se à vontade para compartilhar, nos comentários, como você configurou o seu prompt!

Referências

http://www.mewbies.com/acute_terminal_fun_08_get_colorized_on_the_terminal.htm#color_scripts.
https://en.wikipedia.org/wiki/ANSI_escape_code#Colors.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.