Como personalizar o prompt da linha de comando no UNIX/Linux — parte 2 – Elias Praciano
Categories
Linux Tutoriais UNIX

Como personalizar o prompt da linha de comando no UNIX/Linux — parte 2

Como inserir caracteres de escape para adicionar informações sobre o sistema ao seu prompt de comando personalizado no Linux ou UNIX.

O prompt da linha de comando, que é exibido antes do cursor piscante, pode ser personalizado de diversas formas.
No texto anterior, mostrei algumas formas básicas de personalização.
Para dar continuidade, vou mostrar como inserir algumas informações úteis sobre o sistema, que podem ajudar você a se situar melhor no terminal.

Os exemplos foram testados no Linux (Debian 9, Fedora 25 e openSUSE Tumbleweed), mas você pode aplicá-los em outras distribuições ou em consoles UNIX, como os BSD ou próprio MacOS.

Clique nos links, no decorrer do texto, para obter mais informações sobre algum assunto específico.
Como já sabemos, a variável de ambiente a ser alterada é PS1 e ela pode ser mudada direto na linha de comando (CLI).
O que vou mostrar é que você pode usar uma série de caracteres de escape que exibem informações sobre o seu sistema.
Na parte 1 deste artigo, mostrei o uso de 2 caracteres de escape: \n e \a — para pular uma linha e para acionar o “sininho” do sistema, respectivamente.
Veja uma lista mais completa:

  • \a — aviso sonoro do sistema ou bell character
  • \d — exibe a data no formato nome do dia da semana, nome do mês e dia do mês. Por exemplo: “Tue May 26” (se o seu sistema estiver em inglês) ou “sáb mar 04” (em português).
  • \D{formatação} — neste caso, você precisa oferecer a formatação que deseja para a exibição da data. Se você não especificar o formato desejado, ele usará a representação padrão da localidade para a qual a sua máquina estiver configurada. De qualquer forma, você precisa usar as chaves {}, mesmo que vazias.
  • \e —  imprime um caractere de escape padrão. Muito usado para inserir informações sobre cores (como veremos mais pra frente).
  • \h —  o hostname do seu sistema ou nome parcial do hospedeiro (anfitrião).
  • \H —  o hostname completo.
  • \j —  o número de trabalhos (jobs) em execução e gerenciados pela shell neste momento.
  • \l —  o nome base do dispositivo de terminal.
  • \n —  insere uma nova linha.
  • \r —  um carriage return ou novo parágrafo.
  • \s —  o nome parcial da shell em execução.
  • \t —  a hora atual do sistema no formato 24h HH:MM:SS.
  • \T —  a hora atual do sistema no formato 12h HH:MM:SS.
  • \@ —  a hora atual do sistema no formato 12h am/pm.
  • \A —  a hora atual do sistema no formato 24h HH:MM.
  • \u —  o nome do usuário atual.
  • \v —  a versão da shell em execução.
  • \V —  a versão do release + patchlevel.
  • \w —  o diretório de trabalho atual, com $HOME abreviado para ” ~ “. Usa o valor da variável de ambiente $PROMPT_DIRTRIM.
  • \W —  o nome base do $PWD, com o $HOME abreviado.
  • \! —  o número desta linha de comando no histórico do sistema.
  • \# —  o número do comando em execução neste prompt.
  • \$ —  define o caractere do prompt a ser exibido. Se o uid for 0 (root), exibe um “#”. Para qualquer outro uid, exibe um “$”.
    Esta informação, no command prompt pode evitar que você execute comandos perigosos quando estiver logado como superusuário.
  • \nnn —  imprime o caractere cujo valor octal é igual a nnn.
  • \\ —  se você precisa de uma backslash
  • \[ —  inicia uma sequência de caracteres não-imprimíveis. Pode ser usado para embutir uma sequência de controle de terminal no seu prompt.
  • \] —  finaliza a sequência de caracteres não imprimíveis.

Exemplos de uso de caracteres de escape no prompt do terminal

Tendo a lista acima como referência, fica fácil alterar os exemplos que seguem, para obter o resultado que você deseja para personalizar o seu prompt.
Veja o nome do usuário junto com o caractere de identificação do uid:

PS1="\u \$ -> "

Não se esqueça de sair do modo root, com o comando exit.
Para imprimir o nome de usuário e o hostname ao lado do prompt, use os seguintes caracteres:

PS1="\u-\h -> "

Você pode incluir a data e a hora atuais em uma linha e o diretório atual em outra:

PS1="\d \t\n\W -> "

O resultado é um prompt em 2 linhas:

sáb mar 04 14:30:54
documentos ->

Não esqueça que o seu diretório home será representado por um “~” (til).
Você tem total liberdade para compor o seu prompt com outros caracteres:

PS1="«\d, \t »\n\u@\H «\w» "

Faça várias experiências para determinar como deseja que o seu prompt definitivo fique.

Como tornar as mudanças permanentes

Tudo o que você precisa é acrescentar a linha de configuração do PS1, que você acabou de criar, dentro de um dos arquivos de inicialização do Bash: o .bashrc ou o .bash_profile. Usualmente, é o primeiro.
Na maioria das distribuições Linux ou UNIX, esta a linha de configuração do PS1 já existe e só precisa ser alterada para o que você deseja.
Se não houver uma linha de configuração do PS1, adicione uma ao final do arquivo.
O comando echo pode ser usado, para introduzir a sua configuração direto na última linha do arquivo. Veja um exemplo:

echo "PS1='«\d, \t »\n\u@\H «\w» '" >> .bashrc

Repare em 3 coisas, relacionadas à linha de comando acima:

  1. o uso das aspas duplas e simples, para não confundir o comando.
  2. o uso de “>>” para adicionar a linha ao final do arquivo .bashrc. Se você usar apenas uma “>”, irá sobrescrever o arquivo inteiro com esta única linha de comando. Tenha cuidado, portanto.
  3. se já houver alguma configuração anterior, dentro do arquivo, ela será sempre sobreposta pela última linha adicionada.

Vamos dar um passo adiante?! Que tal personalizar também as cores do seu prompt?!

https://elias.praciano.com/2017/03/como-personalizar-o-prompt-da-linha-de-comando-no-unixlinux-parte-1/.
https://www.gnu.org/software/bash/manual/bashref.html#Controlling-the-Prompt.
http://www.linfo.org/uid.html.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.