impressão de texto colorido usando echo

Eu 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 é o código da cor vermelha e o número das 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 é esta: o que \e e [ e m (após 31) significa exatamente aqui?
Li na página de manual que \ e é escape, mas não entendi o que significa.

Comentários

  • Em em geral, você evita caracteres que têm significados especiais no contexto técnico atual. Por exemplo, strings são frequentemente escritas entre aspas, " assim ". Mas se você quiser aspas dentro de uma string, você deve escapar desses caracteres para que 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.
  • hermannn.com/programs/terminal_fonts

Resposta

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

Mais especificamente, o

é o “ Introdutor de sequência de controle

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

Comentários

  • man 4 console_code não man console_code: No meu ubuntu
  • O nome da página do manual termina com " s " so " man console_codes " deve trazer a página correta.

Resposta

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

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

Basicamente, é apenas a maneira como 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 códigos hexadecimais ou binários ..)

Resposta

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

Para começar, digite no console:

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

O primeiro caractere é um caractere de escape, que se parece com dois caracteres, ^ e [. Para imprimir isso, você deve pressionar CTRL + V e, em seguida, a tecla ESC. Todos os outros caracteres são caracteres normais para impressão, portanto, você vê a string In Color em vermelho. O tipo permanece nessa cor até que você volte a digitar:

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

Resposta

\e é uma abreviatura para o caractere Escape. o <ESC>[ e o m são os marcadores para o início e o fim das sequências de controle de cores ANSI, que são um subconjunto do controle de terminal ANSI sequenciado . 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 salvo localização, etc.).

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *