Pesquisa de site

Como personalizar cores e conteúdo do Bash no prompt do terminal Linux


Hoje, Bash é o shell padrão na maioria (se não em todas) das distribuições Linux modernas. No entanto, você deve ter notado que a cor do texto no terminal e o conteúdo do prompt podem ser diferentes de uma distribuição para outra.

Leitura sugerida: 5 shells de código aberto usados com mais frequência para Linux

Caso você esteja se perguntando como personalizar isso para melhor acessibilidade ou por mero capricho, continue lendo – neste artigo explicaremos como fazer exatamente isso.

A variável de ambiente PS1 Bash

O prompt de comando e a aparência do terminal são governados por uma variável de ambiente chamada PS1. De acordo com a página de manual do Bash, PS1 representa a string de prompt primária que é exibida quando o shell está pronto para ler um comando.

O conteúdo permitido em PS1 consiste em vários caracteres especiais com escape de barra invertida, cujo significado está listado na seção PROMPTING da página de manual.

Para ilustrar, vamos exibir o conteúdo atual do PS1 em nosso sistema (isso pode ser um pouco diferente no seu caso):

echo $PS1

[\u@\h \W]$

Explicaremos agora como personalizar o PS1 de acordo com nossas necessidades.

Personalizando o formato PS1

De acordo com a seção PROMPTING na página de manual, este é o significado de cada caractere especial:

  1. \u: o nome de usuário do usuário atual.
  2. \h: o nome do host até o primeiro ponto (.) no nome de domínio totalmente qualificado.
  3. \W: o nome base do diretório de trabalho atual, com $HOME abreviado com um til (~).
  4. \$: Se o usuário atual for root, exiba #, $ caso contrário.

Por exemplo, podemos considerar adicionar \! se quisermos exibir o número do histórico do comando atual, ou \H se quisermos exibir o FQDN em vez de o nome curto do servidor.

No exemplo a seguir, importaremos ambos para nosso ambiente atual executando este comando:

PS1="[\u@\H \W \!]$"

Ao pressionar Enter você verá que o conteúdo do prompt muda conforme mostrado abaixo. Compare o prompt antes e depois de executar o comando acima:

Agora vamos dar um passo adiante e alterar a cor do usuário e do nome do host no prompt de comando – tanto o texto quanto o fundo ao redor.

Na verdade, podemos personalizar 3 aspectos do prompt:

Text Format Foreground (text) color Background color
0: normal text 30: Black 40: Black
1: bold 31: Red 41: Red
4: Underlined text 32: Green 42: Green
33: Yellow 43: Yellow
34: Blue 44: Blue
35: Purple 45: Purple
36: Cyan 46: Cyan
37: White 47: White

Usaremos o caractere especial \e no início e um m no final para indicar que o que se segue é uma sequência de cores.

Nesta sequência, os três valores (background, format e foreground) são separados por vírgulas (se nenhum valor for fornecido, o padrão será assumido) .

Leitura sugerida: Aprenda Bash Shell Scripting no Linux

Além disso, como os intervalos de valores são diferentes, não importa qual deles (plano de fundo, formato ou primeiro plano) você especifica primeiro.

Por exemplo, o seguinte PS1 fará com que o prompt apareça em texto sublinhado amarelo com fundo vermelho:

PS1="\e[41;4;33m[\u@\h \W]$ "

Por melhor que pareça, essa personalização durará apenas durante a sessão atual do usuário. Se você fechar seu terminal ou sair da sessão, as alterações serão perdidas.

Para tornar essas alterações permanentes, você terá que adicionar a seguinte linha a ~/.bashrc ou ~/.bash_profile dependendo da sua distribuição:

PS1="\e[41;4;33m[\u@\h \W]$ "

Sinta-se à vontade para brincar com as cores para descobrir o que funciona melhor para você.

Resumo

Neste artigo, explicamos como personalizar a cor e o conteúdo do prompt do Bash. Se você tiver dúvidas ou sugestões sobre esta postagem, sinta-se à vontade para usar o formulário de comentários abaixo para entrar em contato conosco. Estamos ansiosos para ouvir de você!