Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Adicionando Cor

A maioria dos programas do emulador de terminal responde a certas sequências de caracteres não imprimíveis para controlar coisas como atributos de caracteres (como cor, texto em negrito e o temido texto piscando) e a posição do cursor. Abordaremos a posição do cursor em breve, mas primeiro veremos a cor.


Confusão Terminal

Na antiguidade, quando os terminais eram ligados a computadores remotos, havia muitas marcas concorrentes de terminais e todos funcionavam de forma diferente. Eles tinham teclados diferentes e todos tinham maneiras diferentes de interpretar as informações de controle. Unix e sistemas semelhantes ao Unix têm dois subsistemas bastante complexos para lidar com a babel de controle de terminal (chamado termocap e informações do termo) Se você olhar nos recessos mais profundos das configurações do emulador de terminal, poderá encontrar uma configuração para o tipo de emulação de terminal.

Em um esforço para fazer os terminais falarem algum tipo de linguagem comum, o American National Standards Institute (ANSI) desenvolveu um conjunto padrão de sequências de caracteres para controlar os terminais de vídeo. Os antigos usuários do DOS se lembrarão do AN-SI.SYS arquivo que foi usado para permitir a interpretação desses códigos.


A cor do personagem é controlada enviando ao emulador de terminal um Código de escape ANSI embutido no fluxo de caracteres a serem exibidos. O código de controle não é “impresso” no display, mas sim interpretado pelo terminal como uma instrução. Como vimos na tabela acima, o \[ e \] sequências são usadas para encapsular caracteres não imprimíveis. Um código de escape ANSI começa com um octal 033 (o código gerado pela chave de escape), seguido por um atributo de caractere opcional, seguido por uma instrução. Por exemplo, o código para definir a cor do texto para normal (atributo = 0), texto preto é:

\ 033 [0; 30m

Aqui está uma tabela de cores de texto disponíveis. Observe que as cores são divididas em dois grupos, diferenciados pela aplicação do atributo negrito (1) que cria a aparência de cores “claras”:


Tabela 13- 2: Sequências de escape usadas para definir as cores do texto


Seqüência

Cor do texto

Seqüência

Cor do texto

\ 033 [0; 30m

Preto

\ 033 [1; 30m

Cinza escuro

\ 033 [0; 31m

Vermelho

\ 033 [1; 31m

Luz vermelha

\ 033 [0; 32m

Verde

\ 033 [1; 32m

Green Light

\ 033 [0; 33m

Brown

\ 033 [1; 33m

Amarelo

\ 033 [0; 34m

Blue

\ 033 [1; 34m

Azul claro

\ 033 [0; 35m

Roxa

\ 033 [1; 35m

Luz roxa

Adicionando Cor


\ 033 [0; 36m

Ciano

\ 033 [1; 36m

Ciano claro

\ 033 [0; 37m

Cinza Claro

\ 033 [1; 37m

Branco


Vamos tentar fazer um prompt vermelho. Vamos inserir o código de escape no início:



$ PS1 = "\ [\ 033 [0; 31m \] <\ u @ \ h \ W> \ $"

$

$ PS1 = "\ [\ 033 [0; 31m \] <\ u @ \ h \ W> \ $"

$


Isso funciona, mas observe que todo o texto que digitamos após o prompt também é vermelho. Para corrigir isso, adicionaremos outro código de escape ao final do prompt que diz ao emulador de terminal para retornar à cor anterior:



$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$

$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$


Isso é melhor!

Também é possível definir a cor de fundo do texto usando os códigos listados abaixo. As cores de fundo não suportam o atributo negrito.


Tabela 13-3: Sequências de escape usadas para definir a cor de fundo


Seqüência

Cor de fundo

Seqüência

Cor de fundo

\ 033 [0; 40m

Preto

\ 033 [0; 44m

Blue

\ 033 [0; 41m

Vermelho

\ 033 [0; 45m

Roxa

\ 033 [0; 42m

Verde

\ 033 [0; 46m

Ciano

\ 033 [0; 43m

Brown

\ 033 [0; 47m

Cinza Claro


Podemos criar um prompt com um fundo vermelho aplicando uma mudança simples ao primeiro código de escape:



$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<eu@linuxbox ~> $

$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<eu@linuxbox ~> $


Experimente os códigos de cores e veja o que você pode criar!


Nota: Além dos atributos de caractere normal (0) e negrito (1), o texto também pode receber os atributos de sublinhado (4), piscando (5) e inverso (7). No interesse do bom gosto, muitos emuladores de terminal se recusam a honrar o atributo piscando, entretanto.



Top OS Cloud Computing na OnWorks: