Como personalizar (e colorir) seu prompt de bash

Índice:

Como personalizar (e colorir) seu prompt de bash
Como personalizar (e colorir) seu prompt de bash

Vídeo: Como personalizar (e colorir) seu prompt de bash

Vídeo: Como personalizar (e colorir) seu prompt de bash
Vídeo: A luz da injeção eletrônica acendeu? Saiba o que fazer! - YouTube 2024, Abril
Anonim
A maioria das distribuições Linux configura o prompt do Bash para parecer algo como
A maioria das distribuições Linux configura o prompt do Bash para parecer algo como

username@hostname:directory$

. Mas você pode configurar o prompt do Bash para conter o que quiser e até escolher as cores que quiser.

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

Onde a variável de prompt é armazenada

Sua configuração de prompt do Bash é armazenada no arquivo.bashrc da sua conta de usuário, que está em

~/.bashrc

. Então, se o seu nome de usuário é bob, o arquivo está em

/home/bob/.bashrc

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

nano ~/.bashrc

Role para baixo até o
Role para baixo até o

PS1=

seção. A primeira variável parece bastante complicada porque inclui informações sobre cores - explicaremos isso depois. A segunda variável, sem informações sobre cores, é a seguinte:

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

Isso ainda é um pouco complicado devido ao
Isso ainda é um pouco complicado devido ao

${debian_chroot:+($debian_chroot)}

bits. Estes apenas dizem à Bash para informá-lo se você estiver usando um ambiente chroot do Debian e normalmente não será mostrado. Ignorando esses, aqui está a estrutura padrão da variável de prompt do Bash:

u@h:w$

u

indica seu nome de usuário,

@

indica o sinal @,

h

indica o nome do host (nome do computador),

:

indica o caractere:

w

indica o diretório de trabalho e

$

indica um $ se você for uma conta de usuário normal ou # se for root. Então, juntando tudo isso, você consegue

username@hostname:working_directory$

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

Deixe o editor de texto por enquanto - em nano, pressione Ctrl + X para sair. Mostraremos como experimentar as variáveis antes de criar uma nova em seu arquivo.bashrc.

Como criar um prompt de bash personalizado

Sua configuração de 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:

DEFAULT=$PS1

Agora você pode definir a variável PS1 para diferentes valores para experimentar. Por exemplo, a primeira linha aqui definiria seu prompt como um prompt básico "user $", enquanto o segundo configuraria seu prompt para um prompt básico "user: working_directory $".

PS1='u$ ' PS1='u:w$ '

Se você quiser voltar ao seu prompt padrão, basta executar o seguinte comando.

PS1=$DEFAULT

O Bash será restaurado para o prompt padrão, graças ao fato de que você salvou essas configurações padrão anteriormente. Observe que quaisquer alterações feitas aqui são apenas temporárias para a sessão atual do Bash, para que você possa sempre sair e fazer login 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 seu prompt Bash padrão sem o incômodo de sair ou fechar uma janela.

Você pode adicionar caracteres ou texto à variável. Então, para prefixar o prompt padrão com "Hello World", você poderia usar:
Você pode adicionar caracteres ou texto à variável. Então, para prefixar o prompt padrão com "Hello World", você poderia usar:

PS1='Hello World u@h:w$ '

Agora que você tem o básico, só precisa saber quais são todos os caracteres especiais. Você provavelmente não se importará com muitos deles, mas aqui está a lista completa como aparece no manual do Bash:
Agora que você tem o básico, só precisa saber quais são todos os caracteres especiais. Você provavelmente não se importará com muitos deles, mas aqui está a lista completa como aparece no manual do Bash:
  • Um caractere de sino:

    a

  • A data, no formato "Data da semana do mês" (por exemplo, "Ter 26 de maio"):

    d

  • O formato é passado para strftime (3) e o resultado é inserido na string de prompt; um formato vazio resulta em uma representação de hora específica de localidade. As chaves são necessá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 da base do nome do dispositivo terminal da shell:

    l

  • Uma nova linha:
  • Um retorno de carro:
  • O nome do shell, o nome de base de $ 0 (a parte após a barra final):

    s

  • A hora, no formato de 24 horas HH: MM: SS:

  • A hora, no formato de 12 horas HH: MM: SS:

    T

  • A hora, no formato de 12 horas am / pm:

    @

  • A hora, no formato de 24 horas HH: MM:

    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 do comando deste comando:

    #

  • Se o uid efetivo for 0, #, caso contrário, $:

    $

  • O caractere cujo código ASCII é o valor octal nnn:

    nn

  • Uma barra invertida:

  • Comece uma seqüência de caracteres não imprimíveis. Isso pode ser usado para incorporar uma seqüência de controle do terminal no prompt:

    [

  • Encerra uma sequência de caracteres não imprimíveis:

    ]

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

PS1='[d ] u@h

w$ '

Os colchetes aqui não são necessários, mas ajudam a separar as coisas visualmente e facilitam a leitura da linha. Como abordamos anteriormente, você pode adicionar qualquer texto ou caracteres normais à variável que desejar, portanto sinta-se à vontade para usar o que funciona para você.

Há um truque mais 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ê queira executar entre dois
Há um truque mais 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ê queira executar entre dois

`

personagens. Isso não é um apóstrofo - esse é o sotaque grave, que aparece acima da tecla Tab no teclado.

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

PS1='u@h on `uname -s -r` w$ '

Como outro exemplo, digamos que você queira visualizar o tempo de atividade e a média de carregamento do sistema, conforme exibido pelo
Como outro exemplo, digamos que você queira visualizar o tempo de atividade e a média de carregamento do sistema, conforme exibido pelo

uptime

comando. Você pode usar a construção a seguir, que coloca o tempo de atividade em sua própria linha antes do restante do prompt.

PS1='(`uptime`)

u@h:w$ '

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

Como adicionar cores ao seu prompt de bash

Depois de descobrir seu prompt preferido, você pode adicionar cores a ele. Isso é realmente muito simples, mas faz a variável parecer muito confusa e complicada se você não entender o que você está vendo.

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

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

Ou, removendo os bits debian_chroot mais uma vez:

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

Este é realmente apenas o
Este é realmente apenas o

u@h:w$

variável de antes, mas com informações de cor. Realmente, podemos dividi-lo em algumas seções:

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

A primeira seção é a

u@h

bit, precedido por informações de cor que o tornam verde. O segundo é o

:

caractere, precedido por informações de cor que remove qualquer coloração. O terceiro é o

w

bit, precedido por informações de cor que o tornam azul. O quarto é o

$

bit, precedido pela informação de cor que remove qualquer coloração.

Depois de entender como construir suas próprias tags de cor, você pode adicionar as cores que quiser em qualquer seção do seu Bash que você goste.
Depois de entender como construir suas próprias tags de cor, você pode adicionar as cores que quiser em qualquer seção do seu Bash que você goste.

Veja o que você precisa saber: você deve incluir as informações do código de cores inteiro entre as

[

e

] character

s. Dentro da tag, você deve começar com

33[

ou

e[

para indicar a Bash que isso é informação de cor. Ambos

33[

e

e[

Faça a mesma coisa.

e[

é mais curto, por isso, pode ser mais conveniente de usar, mas usaremos

33[

aqui, pois 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.

Quebrando isso, aqui está como cada tag de cor será. A única diferença é a informação que você adiciona no lugar de COLOR para definir a cor real:

[33[ COLORm]

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 segundo plano.

Aqui estão os valores para o texto do 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ê deve usar

[33[ 32m]

para texto roxo.

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

Aqui estão os valores para atributos de texto:

  • Texto normal: 0
  • Texto Negrito ou Claro: 1 (Depende do emulador de terminal.)
  • Dim Text: 2
  • Texto sublinhado: 4
  • Texto intermitente: 5 (isso não funciona na maioria dos emuladores de terminal).
  • Texto invertido: 7 (inverte as cores do primeiro plano e do plano de fundo, então você verá texto preto em um segundo plano branco se o texto atual for texto branco em um plano de fundo preto).
  • Texto oculto: 8

Você não precisa incluir o atributo de texto normal. Esse é o padrão, de qualquer forma.

Por exemplo, como o texto em vermelho é o código 31 e o texto em negrito é o código 1, você deve usar

[33[ 1;31m]

para texto em negrito vermelho.

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

Aqui estão os valores para cores de fundo:

  • Fundo preto: 40
  • Fundo azul: 44
  • Plano de 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,

[33[ 44m]

especificaria um fundo azul.

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

PS1='[33[ 42m][33[ 31m]u@h:w$ '

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 tags de cor desejar na variável para colorir diferentes seções do seu prompt como desejar.

As cores de fundo e de texto de primeiro plano continuam após o prompt, a menos que você especifique o código de cores 00 para limpar as informações de cores. Você também pode usar essa tag dentro da variável para redefinir a formatação de volta para o padrão em algum ponto do seu prompt. Por exemplo, a linha a seguir terminaria toda a coloração antes do
As cores de fundo e de texto de primeiro plano continuam após o prompt, a menos que você especifique o código de cores 00 para limpar as informações de cores. Você também pode usar essa tag dentro da variável para redefinir a formatação de volta para o padrão em algum ponto do seu prompt. Por exemplo, a linha a seguir terminaria toda a coloração antes do

$

personagem.

PS1='[33[ 42m][33[ 31m]u@h:w\[33[ 00m]$ '

Image
Image

Como definir seu novo prompt padrão

Depois de experimentar as cores, você deve ter um prompt Bash de que gosta na sessão atual. Mas você provavelmente quer tornar esse novo prompt permanente, de modo que 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 analisamos anteriormente.

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

nano ~/.bashrc

Role para baixo e localize a seção PS1 =.Apenas substitua a variável padrão por sua variável customizada. Você provavelmente vai querer sair do

${debian_chroot:+($debian_chroot)}

No entanto, apenas os bits não aparecerão, a menos que você esteja em um ambiente chroot.

Digite sua variável PS1 colorida sob o

if [ '$color_prompt' = yes ]; then

linha. Insira a variável sem cores sob o

else

linha.

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

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

Recomendado: