Quem usa o terminal com frequência pode ver grande utilidade na exibição de determinadas informações na linha de comando, na parte que vem antes do cursor.
A personalização pode ser uma brincadeira muito divertida para usuários comuns — mas os administradores, que precisam acessar servidores diferentes podem se beneficiar com command line prompts diferenciados (o que ajuda a saber exatamente em que servidor e diretório você está executando algum comando).
Na série de artigos Como personalizar o prompt da linha de comando no UNIX/Linux, abordei várias formas de configurar:
- parte 1 — ajustes básicos do prompt
- parte 2 — como adicionar informações do sistema ao prompt e tornar as mudanças definitivas
- parte 3 — como colorir o prompt de comando
- parte 4 — como passar informações do prompt para a barra de títulos do seu terminal
Se você tiver dúvidas, sugiro a leitura dos textos acima. Assim evitamos redundâncias neste artigo e que ele fique mais longo do que o necessário. 😉
Em outras palavras, este post assume que você já detém o conhecimento do que foi discutido naqueles artigos, de forma que possamos ser bem mais objetivos aqui.
Se você acompanhar as tags emulador de terminal e bash vai encontrar outros textos interessantes relacionados a este assunto também.
Exemplos de prompt que você pode experimentar agora
Os exemplos, que seguem, podem ser experimentados de imediato. Basta copiar e colar no seu terminal Linux, Unix ou mesmo no Bash do Windows (eu não testei isso).
Sinta-se encorajada(o) a modificá-los para atender melhor às suas necessidades. Se quiser compartilhar alguma dica de uso, fique á vontade para postar nos comentários.
Como primeiro exemplo, veja este prompt que exibe um smiley sorrindo para comandos normais e um triste para quando você digitar um comando errado:
PS1="\t \w \`if [ \$? = 0 ]; then echo \:\); else echo \:\(; fi\` "
experimente digitar comandos errados, para ver a mudança no “humor” do smiley.
O código abaixo, exibe uma carinha um pouco diferente para cada tipo de “humor”:
PS1="\`if [ \$? = 0 ]; then echo \\\^\\\_\\\^; else echo \\\-\\\_\\\-; fi\`*\u \w:\h)"
Uma variação deste prompt, exibe um smiley mais simples:
PS1="\t \w \`if [ \$? = 0 ]; then echo \:\); else echo \:\(; fi\` "
Os próximos exemplos usam smileys coloridos:
PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\e[01;32m:)'; else echo -e '\e[01;31m:('; fi\` \[\e[01;34m\]$\[\e[00m\]"
A configuração abaixo acrescenta o número do comando no histórico, no começo da linha.
PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "
Se quiser saber mais sobre as cores e seus códigos, clique aqui.
Prompts em múltiplas linhas, podem conter uma quantidade maior de informações. Por outro lado, alguns usuários acham que isto polui o visual do terminal, que deveria ser um pouco mais espartano.
Se você não se importa com uma ou duas linhas a mais no prompt, mas prefere obter algumas informações imediatas, o exemplo que segue exibe o número de arquivos presentes no diretório atual e o espaço ocupado por eles.
PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"
Ao contrário do anterior, este é simples (espartano), só que usa cores. Você pode usá-lo, como base, para criar algo mais sofisticado.
PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
Segue uma versão minimalista em 2 linhas:
PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"
Gosto muito desta versão, abaixo, com informações sobre o diretório atual e sem excesso de cores:
PS1="\n\[\e[30;1m\]\[\016\]l\[\017\(\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"
Atualmente, gosto do meu assim:
PS1="\n\[\e[34;1m\]\u@\h\[\e[30;1m\] \[\e[34;1m\][ \d, \@]\[\e[30;1m\]\n\[\e[30;1m\]kernel: \$(/bin/uname -r)\n\[\e[32;1m\]\w\[\e[30;1m\] (\[\e[34;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') arquivos, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"
Referências
https://slashdot.org/comments.pl?sid=108424&cid=9219400.
https://www.maketecheasier.com/8-useful-and-interesting-bash-prompts/.
One reply on “10 dicas para personalizar o prompt do seu terminal”
Maneiro seu post. Customizei o meu com as suas informações e ficou muito bacana!
Obrigado.
Abs,