Sur la plupart des terminaux, il est possible de coloriser la sortie à l'aide de la \033
séquence d'échappement ANSI.
Je recherche une liste de toutes les couleurs et options prises en charge (comme les couleurs vives et clignotantes).
Comme il existe probablement des différences entre les terminaux qui les prennent en charge, je m'intéresse principalement aux séquences prises en charge par les terminaux compatibles xterm.
colors
terminal
ansi-escape
ThiefMaster
la source
la source
Réponses:
Les séquences d'échappement ANSI que vous recherchez sont le sous-ensemble Select Graphic Rendition. Tous ces éléments ont la forme
où
XXX
est une série de paramètres séparés par des points-virgules.Pour dire, faites du texte rouge, gras et souligné (nous discuterons de nombreuses autres options ci-dessous) en C, vous pourriez écrire:
En C ++, vous utiliseriez
En Python3, vous utiliseriez
et dans Bash vous utiliseriez
où la première partie rend le texte rouge (
31
), gras (1
), souligné (4
) et la dernière partie efface tout cela (0
).Comme décrit dans le tableau ci-dessous, vous pouvez définir un grand nombre de propriétés de texte, telles que l'audace, la police, le soulignement, etc. (N'est-ce pas stupide que StackOverflow ne vous permette pas de mettre des tableaux appropriés dans les réponses?)
Effets de police
Couleurs 2 bits
Vous l'avez déjà!
Couleurs 4 bits
Les normes mettant en œuvre les couleurs des terminaux ont commencé avec des options limitées (4 bits). Le tableau ci-dessous répertorie les valeurs RVB des couleurs d'arrière-plan et de premier plan utilisées pour celles-ci par divers émulateurs de terminal:
En utilisant ce qui précède, vous pouvez faire du texte rouge sur fond vert (mais pourquoi?) En utilisant:
11 couleurs (un interlude)
Dans leur livre "Termes de couleur de base: leur universalité et évolution", Brent Berlin et Paul Kay ont utilisé des données collectées dans vingt langues différentes dans une gamme de familles de langues pour identifier onze catégories de couleurs de base possibles: blanc, noir, rouge, vert, jaune, bleu, marron, violet, rose, orange et gris.
Berlin et Kay ont constaté que, dans les langues avec moins de onze catégories de couleurs maximum, les couleurs suivaient un modèle évolutif spécifique. Ce schéma est le suivant:
C'est peut-être pourquoi l'histoire Beowulf ne contient que les couleurs noir, blanc et rouge. C'est peut-être aussi pourquoi la Bible ne contient pas la couleur bleue. L' Odyssée d' Homère contient du noir près de 200 fois et du blanc environ 100 fois. Le rouge apparaît 15 fois, tandis que le jaune et le vert n'apparaissent que 10 fois. ( Plus d'informations ici )
Les différences entre les langues sont également intéressantes: notez la profusion de mots de couleurs distinctes utilisés par l'anglais par rapport au chinois. Cependant, approfondir ces langues montre que chacune utilise la couleur de manière distincte. ( Plus d'informations )
D'une manière générale, la dénomination, l'utilisation et le regroupement des couleurs dans les langues humaines sont fascinants. Maintenant, revenons au spectacle.
Couleurs 8 bits (256)
La technologie a avancé et des tableaux de 256 couleurs présélectionnées sont devenus disponibles, comme indiqué ci-dessous.
En utilisant ceux-ci ci-dessus, vous pouvez créer un texte rose comme suit:
Et faites un fond bleu tôt le matin en utilisant
Et, bien sûr, vous pouvez les combiner:
Les couleurs 8 bits sont disposées comme suit:
TOUTES LES COULEURS
Maintenant, nous vivons dans le futur, et le spectre RVB complet est disponible en utilisant:
Vous pouvez donc mettre du texte rosé sur un fond brunâtre en utilisant
La prise en charge des terminaux "true color" est répertoriée ici .
Une grande partie de ce qui précède est tirée de la page Wikipedia " Code d'échappement ANSI ".
Un script pratique pour vous rappeler
Comme je suis souvent dans la position d'essayer de me souvenir de quelles couleurs sont quoi, j'ai un script pratique appelé
~/bin/ansi_colours
::Ceci imprime
la source
echo -e "\033[38;05;34;1mHi"
et ontecho -e "\033[38;05;34m\033[1mHi"
fonctionné pour moi, bien que les effets de police anti-aliasing aient fait changer légèrement l'apparence de la couleur sous les caractères gras dans le terminal sur lequel je testais cela.\033[
codes SGR ( ) commençant par 38 et 48 doivent être séparés avec le reste réservé:
comme sous-séparateur bien que cela ne soit pas tout à fait clair à partir des sources primaires sur: ecma-international.org/publications/files/ECMA-ST/Ecma -048.pdf et itu.int/rec/… . De plus, certaines interprétations oublient l'identifiant de l'espace colorimétrique sous les formes2
(16M-color RGB) /3
(16M-color CMY) /4
(??? CMYK) - par exemple, cela devrait être\033[38:2::255:255:255m
pour un premier plan blanc 16M et non\033[38:2:255:255:255m
!Que diriez-vous:
ECMA-48 - Fonctions de contrôle pour les jeux de caractères codés, 5e édition (juin 1991) - Norme définissant les codes de contrôle des couleurs, qui est apparemment également prise en charge par xterm.
Les SGR 38 et 48 étaient à l'origine réservés par l'ECMA-48, mais ont été étoffés quelques années plus tard dans une norme conjointe UIT, CEI et ISO, qui comprend plusieurs parties et qui (parmi beaucoup d'autres choses) documente le SGR 38/48 séquences de contrôle pour la couleur directe et la couleur indexée :
Il y a une colonne pour xterm dans ce tableau sur la page Wikipedia pour les codes d'échappement ANSI
la source
Il y en a d'autres plus intéressants avec des informations connexes.
la source
C'est absolument lié à votre terminal. TEV ne supporte pas cligner des yeux, si vous utilisez
gnome-terminal
,tilda
,guake
,terminator
,xfce4-terminal
et ainsi de suite selon TEV, vous n'aurez pas cligner des yeux.Si vous utilisez ou souhaitez utiliser le clignotement sur VTE, vous devez utiliser
xterm
.Vous pouvez utiliser la commande infocmp avec le nom du terminal:
Par exemple :
la source
Pour ceux qui n'obtiennent pas de résultats corrects autres que les langues mentionnées, si vous utilisez C # pour imprimer un texte dans la fenêtre de la console (terminal), vous devez remplacer "\ 033" par "\ x1b ". En Visual Basic, ce serait Chrw (27) .
la source