impressão de texto colorido usando eco

25

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 sei que neste exemplo, 31 é código de cor vermelha 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 é de 40 a 47

minha pergunta é a seguinte: o que \ee [e m(depois de 31) significam exatamente aqui?
Eu li na página do manual que é escape, mas não entendi o que isso significa.

M0εiπ
fonte
Em geral, você escapa caracteres que têm significados especiais no contexto técnico atual. Por exemplo, as strings geralmente são escritas entre aspas, "assim". Mas se você quiser aspas dentro de uma sequência, deverá escapar desses caracteres para que eles sejam interpretados literalmente e não como delimitadores. Por exemplo, echo "She said \"Hi\""quanto a este caso (sua pergunta), você terá que esperar por uma resposta melhor.
Emanuel Berg

Respostas:

13

Eles fazem parte dos 'Elementos de sequência' das sequências de escape ANSI, também conhecidas como sequências ECMA-48 CSI, que foram originalmente adotadas em 1976

Mais especificamente, [é o ' Introdutor de Sequência de Controle '

Digite man console_codesquase qualquer distro * nix para ver os códigos e alguns documentos.

Anthony Hatzopoulos
fonte
man 4 console_codenão man console_code: No meu ubuntu
0x6773 26/06
O nome da página do manual termina com um "s", para que "man console_codes" exiba a página correta.
Mikko Rantalainen 21/09
4

Para ser mais preciso, os códigos de cores são definidos como abaixo:

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

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

Então, basicamente, é assim que os diferentes terminais interpretam os 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 ..)

Ann Jawn
fonte
2

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

Para começar, digite isso no seu console:

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

O primeiro caractere é um caractere de escape, que se parece com dois caracteres, ^ e [. Para poder imprimir isso, você deve pressionar CTRL + V e, em seguida, a tecla ESC. Todos os outros caracteres são caracteres imprimíveis normais, então você vê a sequência In Color em vermelho. O tipo permanece dessa cor até você voltar digitando:

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

BorrajaX
fonte
2

\eé uma abreviação para o personagem Escape. the <ESC>[e the msã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 de terminal ANSI seqüenciado. A maioria deles começa com <ESC>[, seguido por um número, seguido de 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.).

DopeGhoti
fonte