View previous topic :: View next topic |
Author |
Message |
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Mon Sep 19, 2005 8:56 am Post subject: [TIP] codes de couleur pour scripts bash |
|
|
Bonjour,
Un truc tout bête, mais qui reste difficile à trouver lorsqu'on écrit des scripts bash : les codes pour "coloriser" le texte !
Enregistrez simplement le code ci-dessous dans un fichier color.sh par exemple, puis, dans votre script, faites un source color.sh ; les variables seront alors disponibles dans votre script.
Code: | __RED="\033[1;31m"
__DARK_RED="\033[0;31m"
__BLUE="\033[0;34m"
__LIGHT_BLUE="\033[1;34m"
__YELLOW="\033[1;33m"
__GREEN="\033[0;32m"
__LIGHT_GREEN="\033[1;32m"
__PURPLE="\033[0;35m"
__CYAN="\033[0;36m"
__BROWN="\033[0;33m"
__LIGHT_GREY="\033[0;37m"
__DARK_GREY="\033[1;30m"
__NO_COLOUR="\033[0m" |
Amusez-vous bien (et n'hésitez pas à compléter la liste des codes couleurs, au besoin).
EDIT : un ami vient de me linker cette page, plutôt sympa. J'y ajoute aussi celle-ci, très complète, que je viens de retrouver dans mon bookmark. _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Last edited by anigel on Mon Sep 19, 2005 9:15 am; edited 1 time in total |
|
Back to top |
|
|
ttgeub Guru
Joined: 20 Jan 2003 Posts: 494 Location: Eindhoven
|
Posted: Mon Sep 19, 2005 8:59 am Post subject: |
|
|
Pour voir l'effet produit, y a ce script qui affiche les couleurs :
Code: |
T='gYw' # The test text
echo -e "\n 40m 41m 42m 43m\
44m 45m 46m 47m";
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
'1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
' 36m' '1;36m' ' 37m' '1;37m';
do FG=${FGs// /}
echo -en " $FGs \033[$FG $T "
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
done
echo;
done
echo
|
PS : d'ailleurs anigel c'est pas toi qui me l'avait filé ce script ????
Last edited by ttgeub on Mon Sep 19, 2005 9:00 am; edited 1 time in total |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Mon Sep 19, 2005 9:00 am Post subject: |
|
|
ttypub wrote: | PS : d'ailleurs anigel c'est pas toi qui me l'avait filé ce script ???? |
Non, c'est S_Oz je crois . Moi j'avais juste fourni les couleurs ! _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Sep 19, 2005 9:02 am Post subject: |
|
|
A priori j'ai aps exactement les mêmes donc je les poste :
Quote: | couleurs_texte()
{
rouge="\\033[0;31m"
rougel="\\033[1;31m"
vert="\\033[0;32m"
vertl="\\033[1;32m"
jaune="\\033[0;33m"
jaunel="\\033[1;33m"
bleu="\\033[0;34m"
bleul="\\033[1;34m"
violet="\\033[0;35m"
violetl="\\033[1;35m"
cyan="\\033[0;36m"
cyanl="\\033[1;36m"
blanc="\\033[0;39m"
blancl="\\033[1;39m"
} |
A noter bien entendu que echo doit être appelé avec l'option -e pour interpréter les caractères échappés, et que chaque couleur peut être associé via paramétrages du TERM dans le ~.Xdefaults à une couleur réelle au format #XXXXXX.
edit : et pour formater le texte, j'ajoutes :
Quote: | placement_texte()
{
largeur_ecran=${COLUMNS}
hauteur_ecran=${LINES}
tabulation=" " # il existe un caractère échappé pour la tabulation
tab=${tabulation}
retrait_droite=10
retrait_gauche=12
ecart=4
droite="\\033[$((${largeur_ecran} - ${retrait_droite}))G"
max_droite="\\033[$((${largeur_ecran} - ${retrait_droite} - ${ecart}))G"
gauche="\\033[${retrait_gauche}G"
min_gauche="\\033[$((${retrait_gauche} + ${ecart}))G"
monte="\\033[1A"
descend="\\033[1B"
return="${descend}${retrait_gauche}"
} |
à adapter bien entendu. |
|
Back to top |
|
|
NiLuJe Guru
Joined: 06 Nov 2004 Posts: 303 Location: Paris, France
|
Posted: Mon Sep 19, 2005 10:07 am Post subject: |
|
|
Moi j'ai plutôt des trucs du genre
Code: | noir=$'\x1b[0;30m'
rouze=$'\x1b[0;31m'
rouge=$'\x1b[1;31m'
vert=$'\x1b[1;32m'
orange=$'\x1b[0;33m'
jaune=$'\x1b[1;33m'
bleu=$'\x1b[1;34m'
magenta=$'\x1b[1;35m'
cyan=$'\x1b[1;36m'
gris=$'\x1b[0;37m'
blanc=$'\x1b[1;37m'
olive=$'\x1b[0;32m' |
Ça passe aussi sur les cat du coup, parcequ'il me semblent que les 033 & co ne passent pas dans les cat ... |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Sep 19, 2005 12:09 pm Post subject: |
|
|
NiLuJe wrote: | Moi j'ai plutôt des trucs du genre
Code: | noir=$'\x1b[0;30m'
rouze=$'\x1b[0;31m'
rouge=$'\x1b[1;31m'
vert=$'\x1b[1;32m'
orange=$'\x1b[0;33m'
jaune=$'\x1b[1;33m'
bleu=$'\x1b[1;34m'
magenta=$'\x1b[1;35m'
cyan=$'\x1b[1;36m'
gris=$'\x1b[0;37m'
blanc=$'\x1b[1;37m'
olive=$'\x1b[0;32m' |
Ça passe aussi sur les cat du coup, parcequ'il me semblent que les 033 & co ne passent pas dans les cat ... |
Tu peux develloper l'histoire des cat stp, car sur le moment je vois pas l'utilité. |
|
Back to top |
|
|
SnowBear l33t
Joined: 03 Sep 2005 Posts: 773 Location: France - Bordeaux
|
Posted: Mon Sep 19, 2005 12:37 pm Post subject: |
|
|
Merci pour ce tip, ça fait un bail que je cherchais comment modifier mon terminal |
|
Back to top |
|
|
nonas Guru
Joined: 17 Apr 2005 Posts: 328
|
Posted: Mon Sep 19, 2005 3:19 pm Post subject: |
|
|
Vous pouvez aussi allez voir dans /etc/DIR_COLORS
C'est là que sont définies les couleurs en fonction de divers paramètres (dossier, type de fichier (par extensions) etc)
Sans oublier /etc/.bashrc pour des réglages globaux.
Un autre lien (en anglais) : http://advbash.activeventure.net/colorizing.html |
|
Back to top |
|
|
NiLuJe Guru
Joined: 06 Nov 2004 Posts: 303 Location: Paris, France
|
Posted: Mon Sep 19, 2005 5:22 pm Post subject: |
|
|
@ Enlight : Test avec ça p.e :
Code: | #! /bin/bash
__ROUGE=$'\x1b[1;31m'
_ROUGE="\033[1;31m"
alias razc="tput sgr0"
echo -e "$__ROUGE __ROUGE" ; razc
echo -e "$_ROUGE _ROUGE" ; razc
cat << EoM
$__ROUGE __ROUGE
EoM
razc
cat << EoM
$_ROUGE __ROUGE
EoM |
ça donne une sortie
__ROUGE
_ROUGE
__ROUGE
(Jusque la tout va bien ... mais la prochaine, c'est le drame!)
\033[1;31m __ROUGE
Donc comme j'ai l'habitude de faire passer mes gros patés via un cat, c'est un peu plus zoli ^^
EDIT : En fait c'est surtout le fait de déclarer sa variable entre $' ', ça marche aussi avec _ROUGE=$'\033[1;31m'. Après le pourquoi du comment, j'en ai aucune idée! ^^ |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Sep 19, 2005 5:28 pm Post subject: |
|
|
ok, mais si je m'amuse à insérer ça dans un script ou un fichier de config ça va me le pourrir, non?
ps : EoM??? |
|
Back to top |
|
|
NiLuJe Guru
Joined: 06 Nov 2004 Posts: 303 Location: Paris, France
|
Posted: Mon Sep 19, 2005 5:36 pm Post subject: |
|
|
C'est à dire? Pas tout suivi la ^^
Le EoM c'est pour délimiter la fin du cat, en l'occurrence EoM pour End of Message la, m'enfin tu met ce que tu veux, à condition que les 2 concordent, évidemment |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Sep 19, 2005 5:38 pm Post subject: |
|
|
Ben je sais pas comment tu utilises cat, mais moi c'est en général pour vérifier le contenu d un fichier de config où d'un script sans ouvrir d'éditeur... |
|
Back to top |
|
|
NiLuJe Guru
Joined: 06 Nov 2004 Posts: 303 Location: Paris, France
|
Posted: Mon Sep 19, 2005 6:17 pm Post subject: |
|
|
Dans ce cas la
Code: | cat << END
BlahBlah
END |
ça fait à peu près la même chose qu'un
Mais je trouve ça moins bordélique qu'une série d'echo, ou un echo de 12 lignes
Ça n'a plus grand chose à voir avec un `cat unfichier` effectivement |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Sep 19, 2005 9:09 pm Post subject: |
|
|
NiLuJe wrote: | Dans ce cas la
Code: | cat << END
BlahBlah
END |
ça fait à peu près la même chose qu'un
Mais je trouve ça moins bordélique qu'une série d'echo, ou un echo de 12 lignes
Ça n'a plus grand chose à voir avec un `cat unfichier` effectivement |
Effectivement, j'avais pas pensé à l'utiliser ainsi sur la sortie standard! Thx! |
|
Back to top |
|
|
|