Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] codes de couleur pour scripts bash
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1880
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Mon Sep 19, 2005 8:56 am    Post subject: [TIP] codes de couleur pour scripts bash Reply with quote

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
View user's profile Send private message
ttgeub
Guru
Guru


Joined: 20 Jan 2003
Posts: 494
Location: Eindhoven

PostPosted: Mon Sep 19, 2005 8:59 am    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1880
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Mon Sep 19, 2005 9:00 am    Post subject: Reply with quote

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 :lol: !
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Mon Sep 19, 2005 9:02 am    Post subject: Reply with quote

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.
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
NiLuJe
Guru
Guru


Joined: 06 Nov 2004
Posts: 303
Location: Paris, France

PostPosted: Mon Sep 19, 2005 10:07 am    Post subject: Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Mon Sep 19, 2005 12:09 pm    Post subject: Reply with quote

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é.
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
SnowBear
l33t
l33t


Joined: 03 Sep 2005
Posts: 723
Location: Dax [40]

PostPosted: Mon Sep 19, 2005 12:37 pm    Post subject: Reply with quote

Merci pour ce tip, ça fait un bail que je cherchais comment modifier mon terminal :wink:
Back to top
View user's profile Send private message
nonas
Guru
Guru


Joined: 17 Apr 2005
Posts: 328

PostPosted: Mon Sep 19, 2005 3:19 pm    Post subject: Reply with quote

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
View user's profile Send private message
NiLuJe
Guru
Guru


Joined: 06 Nov 2004
Posts: 303
Location: Paris, France

PostPosted: Mon Sep 19, 2005 5:22 pm    Post subject: Reply with quote

@ 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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Mon Sep 19, 2005 5:28 pm    Post subject: Reply with quote

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???
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
NiLuJe
Guru
Guru


Joined: 06 Nov 2004
Posts: 303
Location: Paris, France

PostPosted: Mon Sep 19, 2005 5:36 pm    Post subject: Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Mon Sep 19, 2005 5:38 pm    Post subject: Reply with quote

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...
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
NiLuJe
Guru
Guru


Joined: 06 Nov 2004
Posts: 303
Location: Paris, France

PostPosted: Mon Sep 19, 2005 6:17 pm    Post subject: Reply with quote

Dans ce cas la
Code:
cat << END
BlahBlah
END

ça fait à peu près la même chose qu'un
Code:
echo BlahBlah
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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Mon Sep 19, 2005 9:09 pm    Post subject: Reply with quote

NiLuJe wrote:
Dans ce cas la
Code:
cat << END
BlahBlah
END

ça fait à peu près la même chose qu'un
Code:
echo BlahBlah
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!
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum