Pagina inicial » como » Como personalizar (e colorir) seu prompt de bash

    Como personalizar (e colorir) seu prompt de bash

    A maioria das distribuições Linux configura o prompt do Bash para parecer algo como username @ hostname: directory $ . Mas você pode configurar o prompt de Bash para conter o que quiser e até mesmo 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 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 se sinta confortável. Abra um Terminal e execute:

    nano ~ / .bashrc

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

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

    Isto ainda é um pouco complicado devido ao $ debian_chroot: + ($ debian_chroot) bits. Estes apenas dizem ao 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 \ $

    \você 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ê é uma conta de usuário normal ou # se você é root. Então, juntando tudo isso, você consegue username @ hostname: working_directory $.

    Para alterar o seu prompt 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 para agora em nano, pressione Ctrl + X para sair. Nós vamos mostrar-lhe como experimentar com variáveis ​​antes de realmente escrever um novo 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:

    PADRÃO = $ 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 seu 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 de 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:

    PS1 = "Hello World \ u @ \ h: \ w \ $"

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

    • Um caractere de sino: \uma
    • 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 do shell: \eu
    • Uma nova linha: \ n
    • Um retorno de carro: \ r
    • 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: \ t
    • 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: \UMA
    • O nome de usuário do usuário atual: \você
    • 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: \ nnn
    • Uma barra invertida: \\
    • Comece uma seqüência de caracteres não imprimíveis. Isso pode ser usado para incorporar uma sequência de controle de 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 \ t] \ u @ \ h \ n \ w \ $"

    Os colchetes aqui não são necessários, mas ajudam a dividir visualmente as coisas e tornam a linha mais fácil de ler. Como abordamos anteriormente, você pode adicionar qualquer texto ou caracteres normais à variável que desejar, por isso 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 ' 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 em '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 tempo de atividade 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') \ n \ u @ \ h: \ w $"

    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 o 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 está procurando.

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

    $ debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u003 \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    Ou, removendo os bits debian_chroot mais uma vez:

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

    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:

    \ [\ 033 [01; 32m \]\ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\W \ [\ 033 [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 por informações 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..

    Veja o que você precisa saber: você deve incluir as informações do código de cores inteiro entre as \ [  e \] personagems. Dentro da tag, você deve começar com \ 033 [ ou \ e [ para indicar a Bash que isso é informação de cor. Ambos \ 033 [ e \ e [ Faça a mesma coisa. \ e [ é mais curto, então pode ser mais conveniente usar, mas usaremos \ 033 [ 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 se parecerá. A única diferença é a informação que você adiciona no lugar de COLOR para definir a cor real:

    \ [\ 033 [CORm \]

    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 roxo é o código de cor 32, você usaria \ [\ 033 [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.

    Aqui estão os valores dos 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 de primeiro plano e de fundo, assim você verá texto preto em um fundo branco se o texto atual for texto branco em um fundo preto).
    • Texto oculto: 8

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

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

    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, uma vez que um fundo azul é o código 44, \ [\ 033 [44m \] especificaria um fundo azul.

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

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [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 de seu prompt, como desejar.

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

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

    Como definir seu novo prompt padrão

    Quando terminar de experimentar as cores, você deve ter um prompt de Bash que goste na sessão atual. Mas você provavelmente quer tornar esse novo prompt permanente, então ele é usado automaticamente em todas as suas sessões de 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 deixar o $ debian_chroot: + ($ debian_chroot)  apenas bits, no entanto, eles não aparecerão a menos que você esteja em um ambiente chroot, de qualquer forma.

    Digite sua variável PS1 colorida sob o if ["$ color_prompt" = sim]; então linha. Insira a variável sem cores sob o outro 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..

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