Personalizando e Colorindo o Prompt do Bash

Você já viu como é colorido o console padrão do Gentoo Linux? Ficou com inveja?
Então vamos ver como deixar o seu prompt do bash totalmente colorido.

Primeiro você deve descobrir qual arquivo governa a configuração do seu bash.
Em algumas distribuições é o /etc/bashrc, em outras é o /etc/profile. Você pode descobrir isso com o comando:

% grep “export PS1” /etc/*

E se esse comando não retornar nada, use o (mais demorado):

% grep “export PS1” /etc/* –recursive

Vamos supor agora que você tenha descoberto. É o /etc/profile (no Gentoo é esse mesmo).

Primeiro de tudo, logue-se como root.
Se você estiver no X como usuário comum, abra um terminal qualquer e digite:

% su –

Esse sinal de “menos” é para carregar as variáveis de ambiente do superusuário. Não entendeu?
Então peço pra você simplesmente acreditar, porque variáveis de ambiente não são o objetivo dessa dica 🙂

Segundo de tudo, possivelmente o ato mais importante!
BACKUP. Faça uma cópia de segurança do arquivo que você descobriu que contém essa configuração. Se algo der errado (acredite, a chance é GRANDE!), você terá como restaurar seu bash e fazê-lo funcionar normalmente de novo.

Agora que você sabe que o arquivo é o /etc/profile e já fez o seu backup, pode abri-lo com o editor de sua preferência.
Se você estiver no KDE, sugiro o kedit ou o kwrite. Se estiver no GNOME, sugiro o gedit. Para todos, sugiro o nano. Chega de sugestões! 🙂

Localize a linha que começa por:

export PS1

“PS1” é o prompt que o bash te dá. Agora basta você dizer o que quer que apareça no seu prompt do bash.
Por exemplo, o meu é assim:

export PS1=’\[33[01;33m\]\t \[33[01;32m\]\u@\h [33[01;34m\]\w \$ \[33[00m\]’

Isso deixa o meu prompt assim:

01:35:42 (em amarelo) usuario@minhamáquina (em verde) /usr/src/linux (em azul) $ (em azul)

Note, na linha do /etc/profile, os caracteres “\t”, “\u”, “\h”, “\w” e “\$”.
Eles indicam o que deve ser mostrado nesse ponto.

“\t” vem de “time”, e mostra a hora. Por isso a primeira coisa que aparece no meu prompt é a hora.

“\u” vem de “user”, e mostra o nome do usuário logado. Por isso no meu aparece usuario

“\h” é o “host”, ou seja, o nome da máquina, que faz aparecer “minhamáquina”.
Note que entre o \u e o \h existe um arroba. Isso faz aparecer “usuario@minhamaquina”. Já tá dando pra entender?

“\w” vem de “where”, e mostra o diretório onde eu me localizo no momento. O “~” que eu disse que aparece é porque eu estava no meu diretório /home/usuario naquele momento.
Aqui é interessante. Se você colocar um “\W” (maiúsculo), ele vai mostrar somente o diretório exato onde você se encontra, sem mostrar os diretórios abaixo de você. No meu caso, se tivesse um “\W” em vez do “\w”, eu só veria:

01:35:42 usuario@minhamaquina linux $

(com as devidas cores, é claro).

Por último, o \$ não é nada especial, ele simplesmente mostra o próprio símbolo “$”.

Pronto? Ainda não! Faltam as cores!

A parte das cores é um pouco mais sofisticada. Você vê as partes do PS1 que contêm os pares “01;33”, “01;32” e “01;34”? São exatamente esses pares que indicam a cor que deve aparecer.
E o “33” que aparece em cada um desses termos, você vê? Infelizmente eu ainda não consegui descobrir como funcionam esses números, mas mexendo neles só consegui estragar o prompt. 😦
Se você souber e quiser me explicar o significado do 33, por favor mande um e-mail para natunobilis[NOSPAM]gentoobr.org

Então vamos voltar à parte legal. As cores no bash são padronizadas. Então, você pode aproveitar o arquivo de configuração das cores de arquivos (/etc/DIR_COLORS) para descobrir qual cor é qual.
Dê um :

% grep “Attribute” /etc/DIR_COLORS -A5

D eve mostrar todas as cores. Se isso não funcionar, você pode simplesmente abrir o arquivo (dessa vez eu recomendo o comando less) e verificar cada uma das cores.
Para os apressados, e também para os que não conseguirem de jeito nenhum descobrir as cores no DIR_COLORS, aí vai a minha cópia do DIR_COLORS:

# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Ou seja, o par “01;33” diz para o termo “\t” (hora) aparecer na cor amarela, e em negrito.

Na prática, o atributo “negrito” (“bold”) só faz a cor aparecer como esperamos. Experimente mudar o atributo para 00 (ou seja, nenhum). Veja que a cor sairá meio marrom.

A minha opinião é que, na prática, somente os atributos “bold” e “none” (respectivamente, 00 e 01) são úteis. Os outros costumam incomodar mais do que
embelezar.

Como você já deve ter notado, a cor do texto é controlada pelo valor do par que vem depois do ponto-e-vírgula. No caso do “01;33”, a cor é “amarelo”. É possível mudar também a cor do fundo. Mas eu considero este um bom jeito de deixar seu prompt mais feio, e não mais bonito 😛

Você pode experimentar, em vez de usar um par “01;33”, usar “01;33;41”, para ver uma letra amarela num fundo vermelho (bonito…)

Notas: a cor definida no primeiro termo do PS1 se estenderá até o seu final, caso você não use outra cor em algum termo posterior. Ou seja, na minha configuração acima, se você deixar o primeiro termo (“\t”) com a cor amarela, e não definir cor para os termos subseqüentes (“\u”,”\h”,”\w” e “\$”), todos os termos aparecerão em amarelo!

O mesmo vale para o fundo. Se você escolher um fundo vermelho para o primeiro termo, e não definir cor *de fundo* para os termos subseqüentes, todos eles ficarão vermelhos, mesmo que eles tenham diferentes cores para os caracteres!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: