Árvore de Natal na linha de comando

Em breve no ano novo, não quero pensar em trabalho sério.

Todo mundo está tentando decorar algo para o feriado: casa, escritório, local de trabalho ... Vamos decorar uma coisa! Por exemplo, um prompt de comando. Até certo ponto, a linha de comando também é um local de trabalho.

Em algumas distribuições, já está "decorado":



Em outros, é cinza e discreto:



E podemos fazer, por exemplo, o seguinte:



Obviamente, o sabor e a cor de todos os marcadores são diferentes. Se essa coloração lhe parecer desajeitada e inapropriada, saiba que esse ponto de vista tem todo o direito à vida. E se você também quiser adicionar um pouco de humor ao Ano Novo, leia um pequeno artigo sobre o Ano Novo no Cloud4Y.

Primeiro, explicarei como a saída do terminal é "colorida". Isso é feito usando seqüências de escape. E mais precisamente - as seqüências de código de controle do terminal ANSI / VT100. O que significa automaticamente que o emulador de terminal deve suportar esse padrão, caso contrário, o milagre do Ano Novo não acontecerá. E sim, supõe-se que você tenha $ SHELL bash.

Esses comandos são chamados de seqüências de escape pelo motivo que no início de cada um deles é o caractere de escape ASCII. 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 o texto. Escolheremos uma de toda a variedade de possibilidades - alterar a cor do texto e do plano de fundo.

*ESC*[{attr1};...;{attrn}m a sequência de códigos *ESC*[{attr1};...;{attrn}m
Como o caractere Escape , sua forma octal, ou seja, \ 033, é usada . Quanto aos atributos, aqui está uma pequena lista de valores possíveis:

0 Redefina todos os atributos.
1 Brilhante
2 Dim
4 Sublinhado (sublinhado)
5 Piscar
7 Reverso
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 Blue
35 magenta (magenta)
36 ciano (azul)
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 ciano (azul)
47 Branco

Observe que se você agora comanda no terminal: echo \033[0;31m \033[0m'

... então você previsivelmente obterá um abracadabra monocromático como saída:



Porque Porque era necessário usar os recursos avançados do comando echo. Basta adicionar uma chave: echo -e '\033[0;31m \033[0m'

Agora a saída ficará correta:



Com a coloração da saída para o terminal resolvida. Agora vamos ver como colorir o prompt da linha de comando.

Isso é feito alterando a variável PS1. A variável é responsável pelo prompt da linha de comandos. Sua aparência também pode ser alterada, incluindo o uso de seqüências de escape. Mas há uma pequena diferença: você precisa iniciar a sequência com o caractere " \ [ " e terminar com o caractere " \] ", caso contrário, ela será exibida no terminal.

Todas as sequências de comandos possíveis são descritas em detalhes no manual do bash, por isso sugiro que os leitores escolham por si mesmos o que gostam de observar no prompt de comando. Como exemplo, darei meu valor à variável PS1:

\[\033[34;1m\]\t\[\033[0m\],\[\033[32m\]\u@\l@\h\[\033[0m\]:\[\033[33m\]\W\[\033[0m\],\[\033
[31m\]\!\[\033[0m\]\$\n

Vou decifrar esse feitiço terrível:

\ [\ 033 [34; 1m \] - ativa a cor da fonte em azul brilhante (segundo atributo)
\ t - exibe a hora atual no formato HH: MM: SS
\ [\ 033 [0m \] - redefine as configurações de cor da fonte
, - apenas uma vírgula (inesperadamente, certo?)
\ [\ 033 [32m \] - ativa a cor verde da fonte
\ u @ \ l @ \ h - exibe o nome de usuário, o número do dispositivo do terminal e o nome abreviado do host, separados pelo símbolo "@"
[\ 033 [0m \] - redefine as configurações de cor da fonte novamente
: - apenas dois pontos (de repente!)
\ [\ 033 [33m \] - ativa a cor amarela da fonte
\ W - imprime o nome do diretório atual
[\ 033 [0m \] - redefina novamente as configurações de cor da fonte
- outra vírgula (quem teria pensado!)
\ [\ 033 [31m \] - ativa a cor vermelha da fonte
\! - imprima o número do comando no terminal
[\ 033 [0m \] - não se esqueça de redefinir as configurações de cor da fonte
\ $ - imprima "#" para raiz e "$" para todos os outros
\ n - avanço de linha. Porque Para que o comando inicie da borda esquerda da janela e não da posição do final do prompt de comando.

Onde substituir uma variável? A maneira mais lógica de fazer isso é em ~ / .bashrc.

A aparência do convite é limitada apenas pela sua imaginação. Em princípio, nada impede que você use as ferramentas acima para fazer um prompt de linha de comando na forma de uma árvore de Natal. É verdade que esse convite será muito complicado e o trabalho certamente não será mais conveniente. A árvore de Natal pode simplesmente ser exibida acima do prompt da linha de comando no login (ainda precisamos editar ~ / .bashrc). Vá em frente! E obrigado por assistir.



O que mais é útil para ler no blog do Cloud4Y

Configurando top no GNU / Linux
Pentesters na vanguarda da segurança cibernética
Startups que podem surpreender
Você precisa de travesseiros no data center?
→ A casa que o robô construiu

Assine o nosso canal Telegram para não perder outro artigo! Escrevemos não mais do que duas vezes por semana e apenas a negócios. Também lembramos que o Cloud4Y, o provedor corporativo de nuvem, lançou a promoção "FZ-152 Cloud pelo preço de uma venda regular". Você pode se inscrever até 31 de dezembro .

Source: https://habr.com/ru/post/pt480788/


All Articles