O Ano Novo está chegando, não quero mais pensar em trabalho sério.
Todo mundo está tentando decorar algo para o feriado: casa, escritório, local de trabalho... Vamos decorar alguma coisa também! Por exemplo, um prompt de linha de comando. Até certo ponto, a linha de comando também é um local de trabalho.
Em algumas distribuições já vem “decorado”:
Em outros, é cinza e imperceptível:
E podemos fazer, por exemplo, assim:
Claro, todos os marcadores têm gostos e cores diferentes. Se tal coloração parece cafona e inadequada para você, saiba que esse ponto de vista tem todo o direito à vida. E se você também quiser adicionar um pouco do espírito de Ano Novo, leia um breve artigo de Ano Novo da Cloud4Y.
Primeiro, explicarei como a saída do terminal é “colorida”. Isso é feito usando sequências de escape. Ou mais precisamente, as sequências de código de controle do terminal ANSI/VT100. O que significa automaticamente que o seu emulador de terminal deve suportar este padrão, caso contrário o milagre do Ano Novo não acontecerá. E sim, $SHELL é considerado o seu bash.
Esses comandos são chamados de sequências de escape porque no início de cada um deles existe um caractere ASCII “escape”. Existem muitas sequências de controle e permitem, por exemplo, exibir configurações do terminal, controlar a exibição e o movimento do cursor, alterar a fonte, excluir e ocultar texto. Escolheremos uma entre todas as diversas possibilidades - alterando a cor do texto e do fundo.
Execute a sequência de código *ESC*[{attr1};...;{attrn}m
Como um símbolo fuga sua forma octal é usada, ou seja 33. Quanto aos atributos, aqui está uma pequena lista de valores possíveis:
0 Redefinir todos os atributos
1 Brilhante (maior brilho)
2 Escurecer
4 Sublinhado
5 Piscar
7 Reverter
8 Oculto (ocultar texto)
Cores de primeiro plano (cor da caneta, o texto é exibido nesta cor):
30 Preto
31 Vermelho
32 Verde
33 Amarelo
34 Azul
35 Magenta (magenta)
36 Azul-ciano)
37 Branco (белый)
Cores de fundo (cor do papel ou cor de fundo):
40 Preto
41 Vermelho
42 Verde
43 Amarelo
44 Azul
45 Magenta (magenta)
46 Azul-ciano)
47 Branco (белый)
Observe que se você agora comandar no terminal: echo 33[0;31mнекоторый текст 33[0m’
... então você previsivelmente obterá gobbledygook monocromático na saída:
Por que? Porque foi necessário usar os recursos avançados do comando echo. Basta adicionar uma chave: echo -e ‘ 33[0;31mнекоторый текст 33[0m’
A saída agora parecerá correta:
Resolvemos a coloração da saída para o terminal. Agora vamos ver como colorir o prompt de comando.
Isso é feito alterando a variável PS1. A variável é responsável pelo prompt da linha de comando. Sua aparência também pode ser alterada, inclusive por meio de sequências de escape. Mas há uma pequena diferença: você precisa iniciar a sequência com o símbolo “[”, e termina com o símbolo “]”, caso contrário, será enviado para o terminal.
Todas as sequências de comando possíveis são descritas em detalhes no manual do bash, então convido os leitores a escolherem por si mesmos o que preferem ver no prompt da linha de comando. Como exemplo, darei meu valor para a variável PS1:
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Vou decifrar este terrível feitiço:
[ 33[34;1m] — ativar a cor da fonte azul brilhante (segundo atributo)
t – exibir a hora atual no formato HH: MM: SS
[33[0m] – redefinir as configurações de cor da fonte
, - apenas uma vírgula (inesperado, certo?)
[33[32m] — ative a cor da fonte verde
você@l@h – exibir o nome do usuário, o número do dispositivo terminal e o nome abreviado do host, separados pelo símbolo “@”
[33[0m] — redefina as configurações de cor da fonte novamente
: - apenas dois pontos (de repente!)
[33[33m] — ative a cor da fonte amarela
W – exibe o nome do diretório atual
[33[0m] — redefina as configurações de cor da fonte novamente
, - outra vírgula (quem diria!)
[33[31m] — ative a cor da fonte vermelha
! — exibe o número do comando no terminal
[33[0m] - não se esqueça de redefinir as configurações de cor da fonte
$ — imprima “#” para root e “$” para todos os outros
n - tradução de linha. Para que? Para que o comando comece na borda esquerda da janela, e não no final do prompt da linha de comando.
Onde redefinir uma variável? O lugar mais lógico para fazer isso é ~/.bashrc.
A aparência do convite é limitada apenas pela sua imaginação. Em princípio, nada impede que você faça um prompt de linha de comando em forma de árvore de Natal usando as ferramentas descritas acima. É verdade que tal convite será muito complicado e o trabalho definitivamente não se tornará mais conveniente. A árvore de Natal pode simplesmente ser exibida acima do prompt da linha de comando ao fazer login (ainda precisamos editar ~/.bashrc). Vá em frente! E obrigado pela sua atenção.
O que mais você pode ler no blog?
→
→
→
→
→
Assine o nosso
Fonte: habr.com