imprimir texto colorido usando o eco

24

Sei que, para imprimir um texto colorido usando eco, por exemplo, cor vermelha, o código é: echo -e "\e[1;31m This is red text \e[0m"
e eu sei que neste exemplo, 31 é código vermelho e o número de outras cores é:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

e para cores de fundo, o num é 40 a 47

minha pergunta é: o que \e e [ e m (após 31) significam exatamente aqui?
Eu li na man page que \ e é escape, mas eu não entendi o que isso significa.

    
por M0εiπ 18.07.2012 / 20:37

4 respostas

12

Eles são parte dos 'Elementos de sequência' de seqüências de escape ANSI , também conhecidas como ECMA-48 Sequências da CSI que foram originalmente adotadas em 1976

Mais especificamente, o [ é o ' Introdutor da sequência de controle '

Digite man console_codes em quase todas as distros * nix para ver os códigos e alguns docs.

    
por 19.07.2012 / 01:54
4

Para ser preciso, os códigos de cores são definidos abaixo -

Opening
RED= "3[31m" or "\e[1;31m"
CYAN="3[36m" or "\e[1;31m"

Closing = "3[m" or "\e[0m"

Então, basicamente, é apenas o modo como diferentes terminais interpretam códigos de cores e você legenda seu texto dentro desses elementos. É uma maneira estranha de fazer o terminal entender o que você quer dizer (como HexCodes ou Binary ..)

    
por 18.07.2012 / 23:38
2

Eu encontrei uma boa explicação aqui (pelo menos, bom para mim : -) ). Não tenho certeza se será útil para você.

To start, type this on your console:

echo "^[[0;31;40mIn Color"

The first character is an escape character, which looks like two characters, ^ and [. To be able to print this, you have to press CTRL+V and then the ESC key. All the other characters are normal printable characters, so you see the string In Color in red. The type stays that color until you revery back by typing this:

São códigos de escape para definir os modos de cor no terminal. É só que quando impressos com personagens regulares, eles se parecem com isso.

    
por 18.07.2012 / 23:28
2

\e é uma abreviação do caractere de escape. os <ESC>[ e m são os marcadores para o início e o fim das seqüências de controle de cores ANSI, que são um subconjunto do controle do terminal ANSI seqüenciado. A maioria deles começa com <ESC>[ , seguido por um número, seguido por uma letra indicando qual função está sendo implementada (por exemplo, mover o cursor para a linha, limpar para o final da linha, retornar o cursor para o local salvo, etc). >     

por 30.07.2012 / 21:26