8 Prompts do Bash Úteis e Interessantes

Um programador em um laptop.

Muitas pessoas não consideram o prompt da linha de comando como um elemento útil, ou mesmo não prestam muita atenção. No entanto, um prompt útil pode mudar a maneira como você usa a linha de comando e, por extensão, seu sistema. Este artigo mostra uma série de prompts do Bash úteis e interessantes, com exemplos. Note que começamos com os próprios prompts, e depois oferecemos algumas instruções adicionais sobre como trabalhar com eles.

Aqui oferecemos alguns prompts do Bash, e nem todos serão sérios. Por exemplo, nossa primeira entrada na lista pode trazer um pouco de alegria a você ao usar a linha de comando!

Leia também: Comandos Básicos do Bash para Novatos em Linux

1. Mostrar um “Kaomoji” após a execução bem-sucedida

Este prompt é divertido e útil! A ideia é que, enquanto você executar comandos bem-sucedidos, seu prompt mostrará um kaomoji feliz.

Exibindo Kaomoji no prompt do Bash.

Em contraste, quando um comando falha, você verá um kaomoji triste.

Para aplicar isso, use o seguinte código:

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "

Isso pode parecer confuso, mas estamos usando declarações if para determinar se o comando é bom ou ruim. A partir daí, usamos algumas escapadas em torno do kaomoji para garantir que eles sejam exibidos corretamente.

Leia também: Como Usar Emacs Como um Leitor de USENET com Gnus

2. Mude a Cor do Prompt do Bash Quando o Terminal Emitir um Comando Inválido

Mudando cores do prompt.

Indiscutivelmente, este prompt é o mais útil da lista. Como acima, o prompt muda de cor se seu último comando falhar, mas também encurta caminhos longos e contém o número da história do Bash de cada comando para fácil recuperação.

PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'

Novamente, isso pode parecer assustador para implementar, mas é direto. Usamos declarações if novamente, junto com códigos de cor para destacar várias mensagens.

Você pode fazer essas cores do jeito que quiser, embora devêssemos aplicar algum raciocínio lógico de que as cores alteradas devem ajudar você, em vez de serem alteradas apenas pelo simples fato de fazer uma mudança.

Leia também: Como Configurar o Leafnode Como um Servidor USENET Offline

3. Divida Seus Prompts do Bash em Múltiplas Linhas

Usando um prompt Bash multilinha.

Às vezes você pode querer incluir muitas informações em seus prompts do Bash. Se isso descreve você, este prompt do Bash pode interessá-lo. Ele mostra a data, hora, caminho completo do diretório, os nomes do usuário e do host, o terminal ativo e até mesmo a contagem de arquivos e uso de espaço.

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') arquivos \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

Aqui, não precisamos de declarações if, pois o próprio prompt terá um layout estático, embora com conteúdo dinâmico. Você também pode achar difícil interpretar os diferentes elementos neste. Nosso conselho é aplicá-lo e, em seguida, percorrer o prompt parte por parte. Com um pouco de referência cruzada, você começará a entender como o prompt se combina.

4. Use Cores para Tornar Seu Prompt do Bash Mais Legível

Não há nada de especial neste prompt, além do bom uso de cores para separar as diferentes peças de informação. Como você pode ver, ele fornece a hora, nomes do usuário e do host e o diretório atual.

PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "

Este é um dos prompts do Bash mais úteis e é uma área que você buscará primeiro para personalizar seu prompt. Pode lhe dar uma boa base para aprender como um prompt personalizado funciona.

5. Mostrar o Caminho Completo do Diretório

Muito parecido com o uso de cores, este prompt é um limpo e minimalista prompt de duas linhas (embora haja uma linha em branco no topo).

Mostrando o caminho completo do diretório no prompt.

Exibimos o caminho completo do diretório de trabalho na primeira linha, seguido pelo usuário na parte inferior.

PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"

Se você não quiser usar uma linha em branco dentro do prompt, pode remover o primeiro \n. No entanto, experimente o layout e a formatação, já que cada experiência de Terminal será diferente dependendo do seu computador e configurações da linha de comando.

6. Mostrar uma Contagem de Trabalhos em Segundo Plano

Este prompt de duas linhas exibe informações que ainda não usamos em nossos prompts do Bash. Fornecemos uma contagem de trabalhos em segundo plano em execução. Isso será útil se você multitarefa, mas precisa ficar de olho em qualquer atividade.

Mostrando uma contagem de trabalhos em segundo plano.

A primeira linha é o nome do usuário e do host, junto com o caminho do diretório de trabalho. Na segunda linha, temos o número da história e uma contagem dos trabalhos em execução em segundo plano.

PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '

Não há muito a se fazer aqui, embora possa fornecer algumas informações muito necessárias sobre a atividade do sistema. Você poderia até transformar isso em um prompt mais complexo e adicionar declarações if e codificação de cores para notificá-lo quando um trabalho atingir certos níveis.

7. Exibir Informações do Diretório de Trabalho

Exibindo informações do diretório de trabalho.

Com este, exibimos o nome do usuário e do host, a contagem de trabalhos e a data e hora na linha superior. Abaixo está o diretório atual, junto com o número de arquivos no diretório e algumas informações sobre o uso do disco.

PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\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') arquivos, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"

O maior problema com todos esses prompts é descobrir o que está acontecendo em torno da formatação e da escapada. No entanto, assim como com os prompts multilinha, você deve abordar isso peça por peça até entender a estrutura geral.

Você poderia até inserir um trecho de cada vez e notar se exibe ou se há erros, e trabalhar até o trecho completo.

8. Crie Seus Próprios Prompts do Bash

Um prompt Bash personalizado.

Você pode combinar todos os itens acima para criar seus próprios prompts do Bash personalizados. Por exemplo, esta é uma modificação do número sete nesta lista, mas alterada para ocupar menos espaço e incluir algumas informações específicas e relevantes.

Um estilo de duas linhas é sempre mais compacto, pois você pode ver todo o caminho sem reduzir o espaço para os comandos que você usa.

PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"

Agora, você provavelmente entenderá o que este prompt faz, mas nosso conselho é que você tente criar o seu próprio, em vez de colar este. Dessa forma, você pode começar a aprender como os diferentes elementos funcionam juntos e pode até criar seus próprios prompts do Bash personalizados.

Perguntas Frequentes

1. Por que eu gostaria de usar diferentes prompts do Bash?

Existem muitas razões para isso, mas a produtividade é uma consideração chave. Se você usa frequentemente a linha de comando, verá seu prompt a cada poucos segundos. Assim, se você colocar as informações mais importantes nele, poderá tê-las sempre à mão.

Na maioria dos casos, usar um prompt Bash personalizado é mais eficiente do que ter várias janelas abertas.

2. Como faço para adicionar esses prompts do Bash à minha saída do Terminal?

Para usar qualquer um desses prompts, você pode copiar e colar o código no seu aplicativo Terminal. No entanto, isso só se aplicará à sessão atual, então, em teoria, você precisaria fazer isso sempre que abrir o Terminal.

Se você quiser tornar a mudança permanente, pode colar os trechos no final do seu arquivo ~/.bashrc e reiniciar o seu Terminal.

3. Esses prompts do Bash também funcionariam usando outros shells?

Na maioria dos casos, você descobrirá que há compatibilidade entre diferentes tipos de shells. No entanto, não há garantia de que as alterações oferecerão 100% de paridade.

Se você der uma olhada em nosso post sobre como personalizar o Terminal do Mac, ele usa zsh. Você notará que existem diferenças menores, mas muitas semelhanças.

4. Como descobrir que informações e elementos posso adicionar aos meus prompts do Bash?

Praticamente qualquer elemento do seu sistema pode aparecer em um prompt do Bash. Você vai querer investigar as variáveis do Bash, pois é assim que você “desbloqueia” esses diferentes elementos.

Um ótimo recurso para entender o que você pode mudar está no site Linux.com, e recomendamos manter essa documentação à mão durante suas sessões de personalização.

5. E se eu não quiser mais usar prompts Bash personalizados no meu Terminal?

A resposta simples aqui é abrir o arquivo de configuração e deletar as linhas relevantes. Você não precisa executar nenhum comando adicional, embora possa ser útil reiniciar seu Terminal se não vir as mudanças que espera.

Se você usa a linha de comando regularmente, ou tem necessidades específicas ao iniciar um aplicativo de Terminal, personalizar o prompt pode ser uma ótima ideia. Não requer muito conhecimento, e na maioria dos casos, você pode encontrar o prompt que precisa de outro desenvolvedor.