OVH Cloud OVH Cloud

Couleurs de terminal

6 réponses
Avatar
Remi Moyen
Bonjour,

Je suis en train de faire joujou avec les couleurs dans un terminal (par
exemple pour faire le prompt qui fait le plus mal aux yeux ;-) ), avec
des trucs du style :
echo -e "\e[34mbleu\e[0m"

Mais je n'arrive pas à trouver de doc sur tous les codes existants et
leurs actions. Je soupçonne, d'après ce que j'ai trouvé et lu, que c'est
lié au terminal (term, terminfo, termcap, ...), mais à part ça...

En testant à la main et à partir de quelques exemples trouvés au hasard,
j'ai vu que (sur les terminaux que j'ai testé sur ma machine (Linux) en
tous cas : $TERM=linux, vt100 ou xterm) :

- de 30 à 37, c'est la couleur du texte ;
- de 40 à 47, c'est la couleur du fond ;
- de 0 à 7, c'est des modificateurs divers :
- 1 : en général, donne un couleur de texte plus claire. Si je le met
tout seul, ça fait du noir gras. Mais pas moyen de faire du gras d'autres
couleurs (et seul \e[1m fait du noir gras, pas \e[1;30m, alors que \e[30m
fait du noir) ;
- 4 : souligne de la couleur du texte ;
- 5 : texte clignotant ;
- 7 : inverse couleur de fond et du texte
- 2, 3, 6 ne font rien.

Ai-je raté des choses, y'a-t-il des docs un peu générales là-dessus, tout
ça quoi...

Entre autres, puis-je avoir du gras d'autres couleurs, souligner d'une
couleur autre que celle du texte, ou encore modifier le fond *et* le texte
par 1 (genre : 33 me fait du brun, 1;33 fait du jaune. Comment faire pour
écrire sur fond jaune ?) ?

Merci !
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."

6 réponses

Avatar
Jean-Marc Bourguet
Remi Moyen writes:

Bonjour,

Je suis en train de faire joujou avec les couleurs dans un terminal (par
exemple pour faire le prompt qui fait le plus mal aux yeux ;-) ), avec
des trucs du style :
echo -e "e[34mbleue[0m"

Mais je n'arrive pas à trouver de doc sur tous les codes existants et
leurs actions. Je soupçonne, d'après ce que j'ai trouvé et lu, que c'est
lié au terminal (term, terminfo, termcap, ...), mais à part ça...


Un debut de piste (pour les xterm):

http://ftp.xfree86.org/pub/XFree86/4.3.0/doc/ctlseqs.TXT
http://dickey.his.com/xterm/xterm.faq.html

A+
--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Laurent Wacrenier
Remi Moyen écrit:
En testant à la main et à partir de quelques exemples trouvés au hasard,
j'ai vu que (sur les terminaux que j'ai testé sur ma machine (Linux) en
tous cas : $TERM=linux, vt100 ou xterm) :


Voir la doc du terminal.
Pour le VT100, elle est sur http://www.vt100.net/
Celle de xterm est avec ses sources (dans le fichier ctlseq.ms)

Avatar
Pascal Bourguignon
Remi Moyen writes:

Bonjour,

Je suis en train de faire joujou avec les couleurs dans un terminal (par
exemple pour faire le prompt qui fait le plus mal aux yeux ;-) ), avec
des trucs du style :
echo -e "e[34mbleue[0m"

Mais je n'arrive pas à trouver de doc sur tous les codes existants et
leurs actions. Je soupçonne, d'après ce que j'ai trouvé et lu, que c'est
lié au terminal (term, terminfo, termcap, ...), mais à part ça...


Voir les références données par ailleurs.

J'utilise ces variables, pour écrire plus facilement les scripts:

export CSI="["
export CYAN_BACK="${CSI}46m"
export MAGENTA_BACK="${CSI}45m"
export BLUE_BACK="${CSI}44m"
export YELLOW_BACK="${CSI}43m"
export GREEN_BACK="${CSI}42m"
export RED_BACK="${CSI}41m"
export BLACK_BACK="${CSI}40m"
export WHITE_BACK="${CSI}47m"
export WHITE="${CSI}37m"
export CYAN="${CSI}36m"
export MAGENTA="${CSI}35m"
export BLUE="${CSI}34m"
export YELLOW="${CSI}33m"
export GREEN="${CSI}32m"
export RED="${CSI}31m"
export BLACK="${CSI}30m"
export NO_INVERT="${CSI}27m"
export NO_BLINK="${CSI}25m"
export NO_UNDERLINE="${CSI}24m"
export NO_BOLD="${CSI}22m"
export INVERT="${CSI}7m"
export BLINK="${CSI}5m"
export UNDERLINE="${CSI}4m"
export BOLD="${CSI}1m"
export NORMAL="${CSI}0m"
export GOTO_HOME=""
export CLEAR_HOME=" "
export CLEAR_SCREEN="c"


echo -n "${CLEAR_SCREEN}${CSI}10;20H"
echo -n "${BLUE_BACK}${WHITE} bleu "
echo -n "${WHITE_BACK}${BLACK} blanc "
echo -n "${RED_BACK}${WHITE} rouge "
echo -n "${NORMAL}${CSI}20;1H"




--
__Pascal_Bourguignon__ http://www.informatimago.com/
There is no worse tyranny than to force a man to pay for what he doesn't
want merely because you think it would be good for him.--Robert Heinlein
http://www.theadvocates.org/

Avatar
Cedric Cellier
Il s'agit de séquences ansi. Elles sont comprises par beaucoup de
terminaux mais pas tous. Ces séquences permettent aussi de déplacer le
curseur, sauvegarder sa position, scroller l'écran, passer en bold,
italic, etc... Y'a quelques temps je m'étais amusé à faire un prompt
ansi qui faisait défiler l'écran vers le bas au lieu du haut (blague
d'informaticien...), mais j'ai perdu la séquence. Bref, tout ca pour
dire qu'une recherche de "ansi sequences" dans google devrait donner
plus d'explications sur ces codes dont tu ne devineras jamais toutes les
significations empiriquement.

Ils y a aussi je crois un petit shell nomé colortest.sh qui vient avec
Eterm pour tester certains de ces codes, tu devrais pouvoir aussi le
trouver sur google.
Avatar
hugolino
Le Thu, 19 Feb 2004 17:10:02 +0100, Remi Moyen a écrit:
Bonjour,


Bonjour

Je suis en train de faire joujou avec les couleurs dans un terminal (par
<cut>


Je sais pas si ça peut t'aider, mais j'ai ça qui trainait dans
/usr/local/bin:

#!/bin/sh
esc="33["
echo -n "___|___40______41______42______43___"
echo "___44______45______46______47___"
for fore in 30 31 32 33 34 35 36 37; do
line1="$fore |"
line2=" |"
for back in 40 41 42 43 44 45 46 47 ; do
line1="${line1}${esc}${back};${fore}m Normal ${esc}0m"
line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m"
done
echo -e "$line1n$line2"
done

HTH

--
Hugo NPN (i --> ee)
J'aimerais savoir quelle est la meilleure distribution en terme de
stabilité et d'aboutissement ? Merci
la desmodromique. http://www.ducati.it/ je pense.

(Tonton Th in fmbl -+- Et la cascade de la RC 45 ? -+-)

Avatar
Remi Moyen
On Thu, 19 Feb 2004, Remi Moyen wrote:

Bonjour,

Je suis en train de faire joujou avec les couleurs dans un terminal (par
exemple pour faire le prompt qui fait le plus mal aux yeux ;-) ), avec
des trucs du style :
echo -e "e[34mbleue[0m"

Mais je n'arrive pas à trouver de doc sur tous les codes existants et
leurs actions. Je soupçonne, d'après ce que j'ai trouvé et lu, que c'est
lié au terminal (term, terminfo, termcap, ...), mais à part ça...


Je ne réponds pas individuellement à tout le monde, mais merci à tous pour
vos liens, listes et scripts, j'ai trouvé à peu près tout ce que je
cherchais !

Une dernière question : dans la doc xterm indiquée par Jean-Marc Bourguet,
il y a certains codes (par exemple ceux qui permettent de mettre le
fond en jaune, rose, ...) qui ne marchent que si xterm est compilé en
16/88/256 couleurs (88 ?? c'est la première fois que je vois ça !).

En testant, je trouve facilement quel est la situation pour un terminal
donné (visiblement, les miens sont compilés en 16 couleurs), mais
existe-il une manière de déterminer ça sans tester ? Typiquement, dans un
programme qui voudrait utiliser ce genre de fonctionnalités, et qui
testerait d'abord pour savoir si elles sont dispo.
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."