impression de texte en couleur en utilisant echo

Je sais que pour imprimer un texte en couleur en utilisant echo, par exemple en couleur rouge, le code est: echo -e "\e[1;31m This is red text \e[0m"
et je sais que dans cet exemple, 31 est un code de couleur rouge et le nombre dautres couleurs est:

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 

et pour les couleurs darrière-plan, le nombre est compris entre 40 et 47

Ma question est la suivante: quest-ce que \e et [ et m (après 31) signifient exactement ici?
Jai lu dans la page de manuel que \ e est un escape, mais je nai pas compris ce que cela signifie.

Commentaires

  • In général, vous échappez les caractères qui ont une signification particulière dans le contexte technique actuel. Par exemple, les chaînes sont souvent écrites entre guillemets, " comme ceci ". Mais si vous voulez des guillemets dans une chaîne, vous devez échapper ces caractères afin quils soient interprétés littéralement et non comme des délimiteurs. Par exemple, echo "She said \"Hi\"" Comme pour ce cas (votre question ), vous ' devrez attendre une meilleure réponse.
  • hermannn.com/programs/terminal_fonts

Réponse

Ils font partie des « éléments de séquence » de Séquences déchappement ANSI également appelées ECMA-48 Séquences CSI qui ont été initialement adoptées en 1976

Plus précisément le

est le «  Introducteur de séquence de contrôle  »

Tapez man console_codes dans presque toutes les distributions * nix pour voir les codes et quelques documents.

Commentaires

  • man 4 console_code not man console_code: Dans mon ubuntu
  • Le nom de la page de manuel se termine par " s " so " man console_codes " devrait afficher la bonne page.

Réponse

Pour être précis, les codes de couleur sont définis comme ci-dessous –

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

Donc, fondamentalement, cest juste la façon dont différents terminaux interprètent les codes de couleur et que vous sous-titrez votre texte dans ces éléments. Cest une façon étrange de faire comprendre au terminal ce que vous voulez dire (comme des codes hexadécimaux ou binaires ..)

Réponse

Jai trouvé un belle explication ici (au moins, bien pour moi : -) ). Je ne sais pas si cela vous sera utile.

Pour commencer, saisissez ceci sur votre console:

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

Le premier caractère est un caractère déchappement, qui ressemble à deux caractères, ^ et [. Pour pouvoir imprimer cela, vous devez appuyer sur CTRL + V puis sur la touche ÉCHAP. Tous les autres caractères sont des caractères imprimables normaux, vous voyez donc la chaîne In Color en rouge. Le type reste de cette couleur jusquà ce que vous reveniez en tapant ceci:

Ce sont des codes déchappement pour définir les modes de couleur dans le terminal. Cest juste que lorsquils sont imprimés avec des caractères normaux, ils ressemblent à ça.

Réponse

\e est un raccourci pour le caractère déchappement. les <ESC>[ et les m sont les marqueurs pour le début et la fin des séquences de contrôle de couleur ANSI, qui sont un sous-ensemble du contrôle de terminal ANSI séquencé . La plupart dentre eux commencent par <ESC>[, suivi dun nombre, suivi dune lettre indiquant quelle fonction est implémentée (par exemple, déplacer le curseur sur la ligne; effacer jusquà la fin de la ligne, ramener le curseur sur la sauvegarde) emplacement, et cetera).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *