Como personalizar (e colorir) seu prompt do Bash

A maioria das distribuições Linux configura o prompt do Bash para se parecer com username@hostname:directory$. Mas você pode configurar o prompt do Bash para conter o que quiser e até mesmo escolher as cores de sua preferência.

As etapas de exemplo aqui foram executadas no Ubuntu 16.04 LTS. O processo deve ser o mesmo em outras distribuições Linux, embora o prompt Bash padrão e as configurações no arquivo .bashrc possam ser um pouco diferentes.

Onde a variável de prompt é armazenada

A configuração do prompt Bash é armazenada no arquivo .bashrc da sua conta de usuário, que está em ~/.bashrc. Portanto, se seu nome de usuário for bob, o arquivo está em /home/bob/.bashrc.

Você pode abrir o arquivo para visualizar a variável Bash atual. Usaremos o nano como nosso editor de texto de exemplo, embora você também possa usar vi , emacs ou qualquer outro editor de texto com o qual se sinta confortável. Abra um Terminal e execute:

nano ~ / .bashrc

Role para baixo até a PS1= seção. A primeira variável parece um tanto complicada porque inclui informações de cores – explicaremos isso mais tarde. A segunda variável, sem informações de cor, é o seguinte:

$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $

Isso ainda é um pouco complicado por causa dos ${debian_chroot:+($debian_chroot)}bits. Eles apenas informam ao Bash se você está usando um ambiente Debian chroot e normalmente não serão mostrados. Ignorando isso, aqui está a estrutura padrão da variável de prompt do Bash:

\ u @ \ h: \ w \ $

\uindica seu nome de usuário, @indica o sinal @, \hindica o nome do host (nome do computador), : indica o caractere \w:, indica o diretório de trabalho e \$indica $ se você for uma conta de usuário normal ou # se você for root. Então, juntando tudo isso, você consegue username@hostname:working_directory$.

Para alterar o prompt do Bash, você só precisa adicionar, remover ou reorganizar os caracteres especiais na variável PS1. Mas existem muito mais variáveis ​​que você pode usar do que as padrão.

Deixe o editor de texto por enquanto – no nano, pressione Ctrl + X para sair. Mostraremos como experimentar variáveis ​​antes de realmente escrever uma nova em seu arquivo .bashrc.

Como criar um prompt de bash personalizado

A configuração do prompt do Bash é armazenada na variável PS1. Para salvar o conteúdo da variável PS1 em uma nova variável, execute o seguinte comando:

PADRÃO = $ PS1

Agora você pode definir a variável PS1 com valores diferentes para experimentar. Por exemplo, a primeira linha aqui configuraria seu prompt para um prompt básico de “user $”, enquanto a segunda configuraria seu prompt para um prompt básico de “user: working_directory $”.

PS1 = "\ u \ $"

PS1 = "\ u: \ w \ $"

Se você quiser voltar ao prompt padrão, apenas execute o seguinte comando.

PS1 = $ DEFAULT

O Bash será restaurado ao prompt padrão graças ao fato de que você salvou essas configurações padrão anteriormente. Observe que todas as alterações feitas aqui são apenas temporárias para a sessão Bash atual, portanto, você sempre pode sair e entrar novamente ou fechar e reabrir a janela do terminal para voltar ao prompt padrão. Mas a linha acima torna possível voltar facilmente ao prompt padrão do Bash sem o incômodo de sair ou fechar uma janela.

Recomendado:  O que significa F2P? Explicando como funciona o Free-to-Play

Você pode adicionar qualquer caractere ou texto à variável. Portanto, para prefixar o prompt padrão com “Hello World”, você pode usar:

PS1 = "Olá, mundo \ u @ \ h: \ w \ $"

Agora que você aprendeu o básico, só precisa saber o que são todos os caracteres especiais. Você provavelmente não se importará com muitos deles, mas aqui está a lista completa conforme aparece no manual do Bash :

  • Um personagem de sino: \a
  • A data, no formato “Dia da semana, mês, data” (por exemplo, “Ter, 26 de maio”): \d
  • O formato é passado para strftime (3) e o resultado é inserido na string do prompt; um formato vazio resulta em uma representação de tempo específica do local. As chaves são obrigatórias: \D{format}
  • Um caractere de escape: \e
  • O nome do host, até o primeiro ‘.’: \h
  • O nome do host: \H
  • O número de trabalhos atualmente gerenciados pelo shell: \j
  • O nome de base do nome do dispositivo de terminal do shell: \l
  • Uma nova linha: \n
  • Um retorno de carro: \r
  • O nome do shell, o nome de base $ 0 (a parte após a barra final): \s
  • A hora, no formato HH: MM: SS de 24 horas: \t
  • A hora, no formato HH: MM: SS de 12 horas: \T
  • A hora, no formato 12 horas am / pm: \@
  • A hora, no formato HH: MM de 24 horas: \A
  • O nome de usuário do usuário atual: \u
  • A versão do Bash (por exemplo, 2.00): \v
  • O lançamento do Bash, versão + patchlevel (por exemplo, 2.00.0): \V
  • O diretório de trabalho atual, com $ HOME abreviado com um til (usa a variável $ PROMPT_DIRTRIM): \w
  • O nome de base de $ PWD, com $ HOME abreviado com um til: \W
  • O número do histórico deste comando: \!
  • O número de comando deste comando: \#
  • Se o uid efetivo for 0, #, caso contrário $: \$
  • O caractere cujo código ASCII é o valor octal nnn: \nnn
  • Uma barra invertida: \\
  • Comece uma sequência de caracteres não imprimíveis. Isso pode ser usado para incorporar uma sequência de controle de terminal ao prompt: \[
  • Finalize uma sequência de caracteres não imprimíveis: \]

Portanto, se você quiser adicionar a data e hora ao prompt do Bash e colocar o diretório de trabalho no comando em uma segunda linha, poderá usar a seguinte construção:

PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"

Os colchetes aqui não são necessários, mas ajudam a separar as coisas visualmente e tornar a linha mais fácil de ler. Como vimos anteriormente, você pode adicionar qualquer texto ou caracteres normais à variável que desejar, então sinta-se à vontade para usar o que funcionar para você.

Há mais um truque poderoso que você deve conhecer: você pode adicionar a saída de qualquer comando ao prompt. Sempre que o prompt aparecer, o Bash executará o comando e preencherá as informações atuais. Para fazer isso, basta incluir qualquer comando que você deseja executar entre dois `personagens. Isso não é um apóstrofo – é o acento grave, que aparece acima da tecla Tab em seu teclado.

Por exemplo, digamos que você deseja visualizar a versão do kernel do Linux no prompt. Você pode usar uma linha como a seguinte:

PS1 = "\ u @ \ h em ʻuname -s -r` \ w \ $"

Como outro exemplo, digamos que você deseja visualizar o tempo de atividade do sistema e a média de carga, conforme exibido pelo uptime comando. Você poderia usar a seguinte construção, que coloca o tempo de atividade em sua própria linha antes do resto do prompt.

PS1 = "(ʻuptime`) \ n \ u @ \ h: \ w $"

Sinta-se à vontade para experimentar diferentes caracteres especiais e comandos para montar seu prompt de comando ideal.

Recomendado:  Como criar atalhos de teclado personalizados para qualquer aplicativo Mac

Como adicionar cores ao seu prompt Bash

Depois de descobrir seu prompt preferido, você pode adicionar cores a ele. Na verdade, isso é muito simples, mas faz com que a variável pareça muito confusa e complicada se você não entender o que está vendo.

Por exemplo, a variável de prompt de cor padrão anterior era:

$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

Ou, removendo os bits debian_chroot mais uma vez:

\ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

Na verdade, esta é apenas a \u@\h:\w$variável anterior, mas com informações de cor. Na verdade, podemos dividi-lo em algumas seções:

\ [\ 033 [01; 32m \] \ u @ \ h

\ [\ 033 [00m \] :

\ [\ 033 [01; 34m \] \ w

\ [\ 033 [00m \] \ $

A primeira seção é o \u@\hbit, precedido por informações de cores que o tornam verde. O segundo é o :personagem, precedido por informações de cor que remove qualquer coloração. O terceiro é o \wbit, precedido por informações de cor que o torna azul. O quarto é o \$bit, precedido por informações de cor que remove qualquer coloração.

Depois de entender como construir suas próprias marcas de cores, você pode adicionar as cores que desejar a quaisquer seções do prompt do Bash que desejar.

Aqui está o que você precisa saber: Você deve incluir todas as informações do código de cores entre os  \[  e \] characters. Dentro da tag, você deve começar com \033[ou \e[ para indicar ao Bash que esta é uma informação de cor. Ambos \033[e \e[fazem a mesma coisa. \e[é mais curto, então pode ser mais conveniente de usar, mas usaremos \033[ aqui porque corresponde ao que é usado por padrão. No final da tag, você deve terminar com m\ para indicar o final de uma tag de cor.

Resumindo, aqui está a aparência de cada etiqueta de cor. A única diferença são as informações que você adiciona no lugar de COR para definir a cor real:

\ [\ 033 [ COR m \]

O Bash permite que você altere a cor do texto do primeiro plano, adicione atributos como “negrito” ou “sublinhado” ao texto e defina uma cor de fundo.

Aqui estão os valores para o texto de primeiro plano:

  • Preto: 30
  • Azul: 34
  • Ciano: 36
  • Verde: 32
  • Roxo: 35
  • Vermelho: 31
  • Branco: 37
  • Amarelo: 33

Por exemplo, como o texto em roxo é o código de cor 32, você usaria  para texto em roxo. \[\033[32m\]

Você também pode especificar um atributo para o texto. Este atributo deve ser adicionado antes do número da cor, separado por ponto e vírgula (;). O texto com esses atributos terá uma aparência diferente em diferentes emuladores de terminal.

Aqui estão os valores para atributos de texto:

  • Texto normal: 0
  • Texto em negrito ou claro: 1 (depende do emulador de terminal).
  • Dim Text: 2
  • Texto Sublinhado: 4
  • Texto piscando: 5 (Isso não funciona na maioria dos emuladores de terminal.)
  • Texto invertido: 7 (isso inverte as cores do primeiro plano e do plano de fundo, de modo que você verá o texto preto em um fundo branco se o texto atual for um texto branco em um fundo preto.)
  • Texto Oculto: 8
Recomendado:  Como marcar locais específicos em um arquivo do Google Docs

Na verdade, você não precisa incluir o atributo de texto normal. Esse é o padrão, de qualquer maneira.

Por exemplo, como o texto em vermelho é o código 31 e o texto em negrito é o código 1, você usaria para texto em vermelho em negrito.\[\033[1;31m\]

Você também pode especificar uma cor de fundo, mas não pode adicionar um atributo a uma cor de fundo.

Aqui estão os valores para cores de fundo:

  • Fundo preto: 40
  • Fundo azul: 44
  • Fundo ciano: 46
  • Fundo verde: 42
  • Fundo roxo: 45
  • Fundo vermelho: 41
  • Fundo branco: 47
  • Fundo amarelo: 43

Por exemplo, como um fundo azul é o código 44, especificaria um fundo azul. \[\033[44m\]

Você pode especificar as marcas de cor de primeiro e segundo plano. Por exemplo, 42 representa um fundo verde e 31 representa um texto vermelho. Portanto, para tornar o prompt padrão um texto vermelho em um fundo verde, você usaria:

PS1 = "\ [\ 033 [ 42 m \] \ [\ 033 [ 31 m \] \ u @ \ h: \ w \ $"

Nós apenas especificamos uma única cor de fundo e, em seguida, uma única cor de texto de primeiro plano aqui, que começa no início do prompt e é aplicada a todo o texto no prompt. No entanto, você pode especificar quantas marcas de cores desejar na variável para colorir diferentes seções do prompt da maneira que desejar.

As cores do texto de fundo e de primeiro plano continuam além do prompt, a menos que você especifique o código de cor 00 para limpar as informações de cor. Você também pode usar essa tag dentro da variável para redefinir a formatação de volta ao padrão em algum lugar do seu prompt. Por exemplo, a linha a seguir encerraria todas as cores antes do \$caractere.

PS1 = "\ [\ 033 [ 42 m \] \ [\ 033 [ 31 m \] \ u @ \ h: \ w \\ [\ 033 [ 00 m \] \ $"

Como definir seu novo prompt padrão

Assim que terminar de experimentar as cores, você verá um prompt do Bash de sua preferência na sessão atual. Mas você provavelmente deseja tornar esse novo prompt permanente para que ele seja usado automaticamente em todas as suas sessões Bash.

Para fazer isso, você só precisa alterar o conteúdo da variável PS1 no arquivo .bashrc, que examinamos anteriormente.

Abra o arquivo .bashrc em seu editor de texto preferido, assim:

nano ~ / .bashrc

Role para baixo e localize a seção PS1 =. Basta substituir a variável padrão pela sua variável personalizada. Você provavelmente vai querer deixar os ${debian_chroot:+($debian_chroot)}  bits de lado – eles não aparecerão a menos que você esteja em um ambiente chroot, de qualquer maneira.

Insira sua variável PS1 colorida sob a if [ "$color_prompt" = yes ]; thenlinha. Insira a variável sem cores sob a elselinha.

Salve o arquivo e feche o editor de texto. Por exemplo, para salvar o arquivo em nano, pressione Ctrl + O, pressione Enter e, a seguir, Ctrl + X para sair.

Na próxima vez que você iniciar um novo shell Bash – por exemplo, fazendo login no terminal ou abrindo uma nova janela de terminal – você verá seu prompt personalizado.