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

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.

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

Usuários Linux adoram personalizar seus sistemas e isto não é segredo.
Ao usar uma interface gráfica (GUI), isto fica fácil, com a escolha de um tema.
Mas, quando estamos usando um terminal (CLI), como fazer para obter um visual mais agradável e único?

Quando você precisa acessar outros servidores via ssh (às vezes, simultaneamente), pode ver utilidade em que cada um tenha um terminal com visual diferenciado. Desta forma, você sempre saberá em que servidor exatamente está executando algum comando.

Como o assunto pode ser um pouco extenso — calma, que não é nada complicado! 😉 — achei interessante dividir em mais de um post, para tornar a leitura mais agradável e passar o máximo de informações.
Há muitas maneiras de personalizar o seu console, no Linux/UNIX. Por este motivo, este texto vai se concentrar no command prompt, que é a parte que é exibida antes do cursor piscante.


Clique nos links, no decorrer do texto, para obter informações sobre algum assunto específico. A tag emulador de terminal, por exemplo, tem alguns textos que podem te interessar — não esqueça de dar uma olhada nas outras tags, no rodapé deste post, portanto!
fancy linux terminal
Nesta área, o sistema pode exibir uma série de informações, que você pode julgar importantes.
É possível exibir o nome do servidor ou host em que você está trabalhando, seu nome de usuário, a quantidade de processos em execução etc.
O limite é o bom senso — se você estender muito, vai acabar pecando pelo excesso.
Para mim, o mais importante, mesmo, é saber em que diretório precisamente estou executando algum comando.

Qual prompt de comando você quer alterar?

Caso você já não saiba, há vários command prompts possíveis, no Bash.
Veja a lista:

  • PS1 — os valores dados para este parâmetro são usados para determinar a aparência da principal string do prompt da linha de comando. Em algumas distribuições Linux/UNIX o valor padrão é “\s-\v\$ “.
  • PS2 — o valor padrão para a string do prompt secundário e “> “. Ele costuma aparecer quando é necessário complementar algum comando, dado na linha anterior.
    Digite echo " e tecle Enter, no seu terminal, para ver como é o seu PS2.
  • PS3 — é usado como prompt do comando select.
  • PS4 — o valor deste parâmetro é expandido, tal como o do PS1. Seu valor é imprimido na tela antes de cada comando que o bash exibe durante uma execution trace.
    O primeiro caractere do PS4 é replicado múltiplas vezes, de acordo com a necessidade, para indicar vários níveis. Seu valor padrão é “+”

Como você pode ver, os mais usados são o PS1 e o PS2. Os outros dois são bem raros para usuários comuns.
Neste artigo, vamos mostrar exemplos de configuração e uso do PS1.
Se quiser configurar os outros itens, basta seguir os mesmos procedimentos usados para configurar o PS1

Exemplos de prompt da linha de comando

Se quiser fazer uma experiência, agora, para alterar o seu prompt execute a seguinte linha de comando:

PS1="meu prompt -> "

e veja como ficou:

meu prompt -> 

Se quiser que ele fique com cara de Python Shell, use-o assim:

meu prompt -> PS1=" »»» "

»»»

Você pode inserir um Enter entre as aspas, para fazer uma mudança de linha — assim, você pode ter um prompt em 2 linhas ou mais. Para obter este mesmo efeito, pode usar o caractere tradicional de mudança de linha: \n. Veja como fica:

PS1=" digite um comando, abaixo:\n --> "

ps1 prompt command
Como você pode ver, quando o sistema encontra os caracteres \n, ele sabe que deve mudar de linha. Estes não serão impressos.
O Bash permite inserir diversos outros tipos de “caracteres não-imprimíveis” dentro do conteúdo de PS1. Experimente inserir o \a para obter um aviso sonoro no prompt, por exemplo.
Na próxima parte deste artigo, vamos mostrar como inserir informações básicas do sistema no prompt da linha de comando.

As vantagens de usar uma distro Linux superleve

Em oposição às grandes distribuições populares do Linux, que primam por tornar a vida de seus usuários mais simples e suas tarefas mais eficientes, com a adição de recursos visuais e que aproveitam melhor a tecnologia disponível no hardware — sempre houve a possibilidade de optar por distribuições com ambientes gráficos mais leves ou lightweight.
À medida em que ambientes desktop como o GNOME, o KDE e, na última década, o Unity se popularizavam, muitas pessoas se mantiveram ou migraram para ambientes como o XFCE, LXDE.
Algumas pessoas optaram, ainda, por uma redução mais drástica, proporcionada pelo IceWM, i3 etc.
Sem falar que suprimir totalmente a interface gráfica (GUI) também tem sido opção… mas isto é assunto para outro post.
Mas que motivos uma pessoa teria para desejar esta redução na quantidade de recursos gráficos e abrir mão da beleza, em uma máquina atual e moderna — com 2 GPUs, vários núcleos na CPU principal, grande quantidade de memória RAM, drives flash SSD etc.?
Vou tentar responder além do óbvio neste post — por que, se você tem um equipamento com recursos muito limitados ou antigos, é evidente que usar uma distro muito pesada vai tornar sua vida mais chata e sem graça…

Reaproveitar o seu PC, netbook ou laptop antigo

A razão mais comum para procurar por distribuições Linux super leves é pela possibilidade de voltar a usar equipamentos antigos (com 3 anos ou mais).
Um velho netbook, encostado em um canto, pode brilhar novamente na sua vida, com a distro certa.
Nesta categoria, as distribuições GNU/Linux são muito pouco exigentes em termos de hardware.
Estou escrevendo este texto em um netbook Semp Toshiba Infinity STI 1093, originalmente com apenas 1 GiB de memória RAM (hoje, com 2 GiB), rodando a distro LXLE.
Muitos notebooks/netbooks antigos sequer contam mais com uma bateria — cuja vida útil dificilmente supera 5 anos — ou seja, perdem a função da mobilidade. Mas podem ser usados como Desktop PCs.
Você pode dar vida nova a um equipamento antigo, como servidor de arquivos Owncloud, central de multimídia, roteador etc.
Você ficaria surpreso em como a experiência pode ser incrível.

A tendência entre as grandes distribuições é abandonar a arquitetura 32-bit.
As distribuições super leves poderão continuar a dar suporte por mais alguns anos — mas não espere que isto ainda seja realidade daqui a uma década.
Minha recomendação pessoal é pôr este “PC velho” para trabalhar, dar tudo o que ele pode, até o fim.
Não poupe esta máquina.

Menos é mais

Quem tem um equipamento atual, dotado dos mais recentes avanços do mercado, também tem bons motivos para usar uma distro Linux super leve.
Convenhamos, a gente não liga computador para “usar sistema operacional”. Quanto mais transparente esta categoria de software for, melhor.

Quanto menos recursos o sistema operacional e sua interface GUI usarem, mais os recursos de hardware ficarão disponíveis para as suas tarefas.

Edição de imagem e vídeo, jogos 3D, simulações, alguns softwares de engenharia etc. — estas, entre muitas outras, são aplicações vorazes e que consomem grande quantidade de memória e processamento.
Os usuários de aplicações pesadas têm razões de sobra para optar por uma distro que consuma menos recursos dos seus equipamentos, deixando o máximo disponível para suas aplicações.

Menos porcarias inúteis instaladas

No post Como Instalar Ubuntu a Partir do Mínimo, mostrei como é possível construir uma distro Linux, baseada no Ubuntu Mini, desde a CLI (interface de linha de comando) básica, até onde você quiser.
Um dos motivos de uma distro ser light é que ela vem sem “as perfumarias”.
A ideia é o que não é necessário, não entra.

Se o usuário quiser, pode instalar por si mesmo os softwares de que precisa — o gerenciador de pacotes sempre estará lá para isso.

Sistemas leves são potencialmente mais seguros

A quantidade de software instalada pelas grandes distribuições escapa da compreensão de um usuário comum.
As possibilidades de algo dar errado ou o sistema ficar instável são maiores.
Em sistemas super leves, é menos provável “tropeçar nas próprias pernas”.
Com menos software instalado, fica mais fácil manter as políticas de segurança do seu sistema.
Enfim, você leva menos bugs ou possíveis exploits para casa (ou para o escritório) ao optar por uma distro Linux minimalista.

Pense nisso!

Conheça estas 3 opções de instalação do Telegram Desktop através do SNAP.

As distribuições baseadas no Ubuntu podem usufruir da instalação de um número crescente de aplicativos através do SNAP.
Se vocẽ fizer uma busca dentro deste site, vai encontrar um número bom de artigos envolvendo o uso deste método de instalação e gerenciamento de pacotes de software.
Para escrever este texto, estou usando o KDE Neon, que usa o Ubuntu LTS como base para as versões mais atualizadas do KDE. Por isto ele trabalha muito bem com os pacotes snap.
Neste artigo vou mostrar as seguintes opções de instalação do cliente Telegram Desktop para Linux:

  1. Telegram Desktop stable — a versão estável atual do aplicativo. Indicado para a maioria das pessoas.
    Se você não usa uma distro Linux baseada no Ubuntu (e, portanto, não pode usar o snap) ou prefere uma outra abordagem para instalar o Telegram, leia este artigo.
  2. Telegram Desktop alpha — a versão dos desenvolvedores do aplicativo.
    Se você quiser testar os novos recursos, antes que eles cheguem à versão estável, esta é a opção para você.
    O conselho aqui, é manter uma versão estável rodando em algum outro dispositivo (pode ser no celular), para o caso da versão alpha ficar inoperante.
    Para quem não quer ou não pode usar o snap, tente este método de instalação.
  3. Telegram CLI — a versão do Telegram para linha de comando ou console (CLI = Command Line Interface).
    Para quem não pode ou não quer usar o snap, outro método de instalação foi abordado neste post.

O uso do snap, como método de instalação do Telegram também foi explicado en passant no post Como instalar aplicativos com o snap. Mas aqui, vamos falar deste assunto com um pouco mais de foco.

Como instalar o Telegram Desktop Stable

Para instalar a versão estável do aplicativo, rode o snap da seguinte forma:

sudo snap install telegram-latest

Como instalar o Telegram Desktop Alpha

O nome do pacote de instalação da versão em desenvolvimento é telegram-sergiusens. Pode ser instalada assim:

sudo snap install telegram-sergiusens

Como instalar a versão CLI do Telegram

Se você tem recursos limitados de hardware ou precisa reservar o máximo de processamento a atividades específicas, pode usar a versão CLI do aplicativo.
Ela também tem seu pacote snap para instalação. Veja:

sudo snap install telegram-cli 

Conclusão

A desinstalação pode ser feita com o comando “sudo snap remove” seguido do nome do pacote que vocẽ deseja desinstalar.
Como vocẽ já deve saber, ao usar a versão alpha de qualquer software você se sujeita a alguns possíveis problemas inerentes a software em desenvolvimento… mas ajuda imensamente os desenvolvedores do seu aplicativo favorito a fazer um trabalho cada vez melhor.
Recomendo, para finalizar, a leitura do texto Configurações básicas do Telegram Desktop, para obter algumas dicas iniciais sobre o aplicativo.

Conheça o CMUS, um player de áudio bonito para a linha de comando do Linux.

O Linux tem vários players de áudio, com uma grande variedade de recursos visuais.
Alguns são bastante leves e outros, um pouco mais pesados.
É justamente na relação entre funcionalidade e consumo de recursos do sistema que residem algumas das principais reclamações de usuários.
Sabemos que decodificar arquivos de áudio comprimidos, como é o caso de formatos como MP3 e OGG, é uma tarefa voraz em recursos de processamento (principalmente em hardware antigo).

O termo audio CODEC, frequentemente se refere à tarefa do processador de comprimir e descomprimir dados de áudio.
A tarefa é executada por quase todos os aplicativos de multimídia e consiste de algoritmos de computação intensiva, para processar sinais de áudio.
Processadores atuais são capazes de fazer o processamento em paralelo de sinais digitais de áudio, o que evita sobrecarregar o sistema.

Neste texto, vamos abordar um player de audio para a CLI (Command Line Interface) ou Interface de Linha de Comando — o CMUS.
Esta categoria de players pode ser usada por quem tem hardware muito limitado ou gosta de ouvir música, enquanto faz suas atividades no computador, mas prefere que seus recursos de hardware sejam usados, predominantemente, pelos seus programas de trabalho.
linux cmus player

O CMUS player

O cmus tem uma interface visualmente agradável e, depois que se aprende a usá-lo, ele é bem intuitivo.
Contudo, é bom dizer que existe uma “curva de aprendizagem” a ser percorrida, que pode ser um pouco acentuada para alguns usuários.
O cmus organiza seus arquivos de áudio, ou pelos títulos das músicas, ou pelos dos álbuns.
É possível carregar suas playlists e usar a função de busca, presente no programa.
A gente acessa o programa através de diferente formatos de layout.
Quem já é usuário do vi, o editor de textos, vai se sentir em casa — uma vez que são usados atalhos de teclados e comandos inspirados nele.
Por exemplo, é possível adicionar as músicas contidas na sua pasta ~/Música com o comando :add ~/Música — ele carregará a pasta toda de arquivos (recursivamente) e você pode percorrer os itens com as teclas ‘j’ e ‘k’ ou com as setas direcionai. Fica à sua escolha.

Os layouts do cmus

O player pode usar um entre sete layouts ou modos de exibição disponíveis.
Para fazer a seleção de modo, pressione uma das teclas entre 1 e 7.
Conheça cada um deles:

  1. Library view ou modo de visualização de biblioteca — no qual as trilhas são organizadas por árvore de artista/álbum.
    A organização por artista é feita alfabeticamente.
    Quando a organização se dá por álbum, ela é ordenada por ano.
  2. Sorted library view, exibe o mesmo conteúdo que o modo anterior, mas como lista simples, organizada de acordo com os critérios do usuário.
  3. Playlist view exibe lista de músicas editável, com ordenação opcional.
  4. Play Queue view exibe a fila de trilhas de áudio a ser tocada, na sequencia.
  5. Directory browser neste modo de visualização, as músicas podem ser adicionadas ou para a biblioteca, ou para uma playlist ou para a fila.
  6. Filters view, lista os filtros definidos pelo usuário.
  7. Settings view lista atalhos de teclado (keybindings), comandos diversos e opções do aplicativo.
    Você pode remover bindings com ‘D’ ou ‘Del’.
    Pode alterar atalhos de teclado e variáveis com a tecla ‘Enter’ e ‘Espaço’.
    Use esta tela, sempre que tiver esquecido algum comando e queira saber como fazer alguma coisa.

Comandos do cmus player

Tudo, no cmus, é implementado como comandos que podem ser fornecidos na linha de comando do próprio aplicativo, logo abaixo da barra de status.
Para acessar esta seção e começar a digitar, tecle ‘:’. Ao terminar, tecle ‘Enter”, para executar.
Os comandos também podem ser atribuídos a teclas — de forma que você mesmo pode criar suas próprias teclas de atalho.
Veja algumas teclas ou atalhos úteis, que podem ser usados na linha de comando do cmus:

  • ‘Esc’ ou a combinação ‘Ctrl C’ — cancela um comando em digitação
  • :quit ou :q — encerra o player e volta para a linha de comando do sistema
  • ‘TAB’ — tal como no Bash, pode ser usado para completar automaticamente os seus comandos e poupar digitação
  • :clear — limpa a visualização atual — o que inclui a exibição da biblioteca, a playlist e a fila de arquivos de áudio esperando para tocar

Mas para frente, vamos abordar mais alguns comandos para o cmus.

Como buscar e encontrar suas músicas, com o cmus

Use a linha de comando para fazer buscas no cmus e encontrar álbuns, artistas ou nomes de músicas.
Para iniciar uma busca, tecle ‘/’, seguido da string que você deseja pesquisar e tecle Enter.
Veja um exemplo:

/tribo de jah

Depois de dar ‘Enter’, é possível navegar pela músicas usando ‘n’ para a próxima (next) ou ‘N’ para a ocorrência anterior.
Você pode usar ‘?’ para inverter a ordem da busca.
Funciona tal como no comando man (do manual do sistema).
Nos layouts 1 a 4, as palavras da sua busca são comparadas aos nomes dos artistas (ou bandas), aos nomes dos álbuns e aos títulos das tags.
Nos modos de visualização 2 a 4, tecle //palavras-da-pesquisa ou ??palavras-da-pesquisa para pesquisar apenas artistas e álbuns – ou títulos, nos layouts 2 a 4.
Veja alguns exemplos de comandos:
Altere o plugin de saída de áudio:

:set output_plugin=oss

Para iniciar a lista de música, basta pressionar a tecla ‘x’ ou usar o comando:

:player-play

Se você estiver dentro de um dos modos library, playlist ou play queue, use este comando para limpar a lista:

:clear

Como você deve ter percebido, o player é complexo (no sentido de ter várias opções de operação e ajuste).
Você pode levar algum tempo para dominar o seu uso.
Na minha opinião, o tempo dispendido para conhecer os recursos deste aplicativo valem a pena.
Não deixe de conhecer, também o player mpg123 — também é para CLI e permite alguns recursos avançados, como equalização de áudio.