#1 Le 26/01/2018, à 16:47
- Brice Jeunieaux
[Résolu] Cumuler couleur + effets dans un script
Bonjour / bonsoir ,
réalisant un simple script dans lequel la couleur est présente, j'utilise pour ce faire des variables dans lesquelles sont stockées les "codes couleurs", si je puis dire, ce qui me donne :
enBlanc='\033[37m'
enBleu='\033[34m'
enJaune='\033[33m'
enRouge='\033[31m'
enVert='\033[32m'
enNoir='\033[30m'
enGras='033[1m'
enSouligne='033[4m'
enClignotant='033[5m'
enSurligne='033[7m'
enDefaut='\033[0m'
Ensuite, j'appelle mes variables tout simplement de cette manière, dans un souci de visibilité du code :
echo -e " ${enRougeGras}Texte 1${enDefaut} "
Cela fonctionne très bien, jusque là, pas de problème. Le problème arrive lorsque je veux cumuler différents effets (par exemple, je veux mon texte en rouge, gras et souligné). Je veux utiliser toujours mes variables, mais je ne trouve pas une syntaxe qui fonctionne, et je veux éviter cela :
enBlanc='\033[37m' ; enBlancGras='\033[37m\033[1m' ; enBlancSouligne='\033[37m\033[4m' ; enBlancSurligne='\033[37m\033[7m' ;
enCyan='\033[36m' ; enCyanGras='\033[36m\033[1m' ; enCyanSouligne='\033[36m\033[4m' ; enCyanSurligne='\033[36m\033[7m' ;
enViolet='\033[35m' ; enVioletGras='\033[35m\033[1m' ; enVioletSouligne='\033[35m\033[4m' ; enVioletSurligne='\033[35m\033[7m' ;
enBleu='\033[34m' ; enBleuGras='\033[34m\033[1m' ; enBleuSouligne='\033[34m\033[4m' ; enBleuSurligne='\033[34m\033[7m' ;
enJaune='\033[33m' ; enJauneGras='\033[33m\033[1m' ; enJauneSouligne='\033[33m\033[4m' ; enJauneSurligne='\033[33m\033[7m' ;
enVert='\033[32m' ; enVertGras='\033[32m\033[1m' ; enVertSouligne='\033[32m\033[4m' ; enVertSurligne='\033[32m\033[7m' ;
enRouge='\033[31m' ; enRougeGras='\033[31m\033[1m' ; enRougeSouligne='\033[31m\033[4m' ; enRougeSurligne='\033[31m\033[7m' ;
enNoir='\033[30m' ; enNoirGras='\033[30m\033[1m' ; enNoirSouligne='\033[30m\033[4m' ; enNoirSurligne='\033[30m\033[7m' ;
Vous en conviendrez, niveau lisibilité et optimisation du code, on a vu mieux...
Ma question est donc : quelqu'un saurait-il comment cumuler les effets, en conservant ce système de variables (c'est la priorité) ?
Sachant que j'ai déjà essayé de faire comme cela, sans succès :
echo -e " ${enRouge}${enGras}${enSouligne}LOADING...${enDefaut}"
Merci beaucoup à vous, si quelqu'un peut me mettre sur la piste.
Dernière modification par Brice Jeunieaux (Le 26/01/2018, à 18:02)
Hors ligne
#2 Le 26/01/2018, à 17:25
- bruno
Re : [Résolu] Cumuler couleur + effets dans un script
Ta ligne echo fonctionnera parfaitement si tu corriges tes variables :
enGras='\033[1m'
enSouligne='\033[4m'
enClignotant='\033[5m'
enSurligne='\033[7m'
#3 Le 26/01/2018, à 17:28
- MicP
Re : [Résolu] Cumuler couleur + effets dans un script
Bonjour / Bonsoir / Bonne nuit / Bonnes années / Bonne *
Combine les valeurs de tes séquences d'échappement en les faisant suivre chacune par un point-virgule :
echo -e "\033[31mEn rouge\033[0m"
echo -e "\033[31;1mEn rouge et gras\033[0m"
echo -e "\033[31;1;4mEn Rouge, Gras et Souligné\033[0m"
https://stackoverflow.com/questions/484 … -sequences
Dernière modification par MicP (Le 28/01/2018, à 17:39)
Hors ligne
#4 Le 26/01/2018, à 17:33
- kholo
Re : [Résolu] Cumuler couleur + effets dans un script
salut,
j'utilise ça en entête de mes scripts, mais je n'ai pas pris le temps de tout tester...
# COULEURS
fdNoir='\033[40m'
fdRouge='\033[41m'
fdVert='\033[42m'
fdJaune='\033[43m'
fdBleu='\033[44m'
fdRose='\033[45m'
fdCyan='\033[46m'
fdGris='\033[47m'
# fdDefaut='\033[49m'
enNoir='\033[30m'
enRouge='\033[31m'
enVert='\033[32m'
enJaune='\033[33m'
enBleu='\033[34m'
enRose='\033[35m'
enCyan='\033[36m'
enGris='\033[37m'
# enDefaut='\033[39m'
enGras='\033[1m'
enSouligner='\033[4m'
enClignotant='\033[5m'
enSurligner='\033[7m'
enCache='\033[8m'
enDefaut='\033[0m'
echo -e "${enJaune}${enGras}-------------------------------------------
${enRouge}${enGras}$nomlogiciel v $VERSION
${enJaune}${enGras}-------------------------------------------
....
${enVert}${enGras}p ${enJaune}${enGras}: précédent\t\t\t\
${enVert}${enGras}s ${enJaune}${enGras}: suivant
${enJaune}${enGras}-------------------------------------------
${enVert}${enGras}a ${enJaune}${enGras}: aide
${enRouge}${enGras}c ${enJaune}${enGras}: changer la catégorie
${enRouge}${enGras}q ${enJaune}${enGras}: quitter
${enJaune}${enGras}-------------------------------------------
${enJaune}${enGras}votre choix : ${enDefaut}"
Hors ligne
#5 Le 26/01/2018, à 17:38
- Hizoka
Re : [Résolu] Cumuler couleur + effets dans un script
Salut,
le cumul fonctionne en effet, un lien super pratique : https://misc.flogisoft.com/bash/tip_col … formatting
genre :
echo -e "\e[1;31;42m Yes it is awful \e[0m"
Dernière modification par Hizoka (Le 26/01/2018, à 17:39)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 26/01/2018, à 17:55
- Brice Jeunieaux
Re : [Résolu] Cumuler couleur + effets dans un script
Ta ligne echo fonctionnera parfaitement si tu corriges tes variables :
enGras='\033[1m' enSouligne='\033[4m' enClignotant='\033[5m' enSurligne='\033[7m'
Merci beaucoup, j'avais oublié les backslashs.
Comme quoi avec une simple erreur banale, on peut s'arracher les cheveux pendant un moment...
Du coup, j'ai testé après rectification, et aucun problème en vue, merci beaucoup !
Hors ligne
#7 Le 26/01/2018, à 17:58
- Brice Jeunieaux
Re : [Résolu] Cumuler couleur + effets dans un script
Salut,
le cumul fonctionne en effet, un lien super pratique : https://misc.flogisoft.com/bash/tip_col … formatting
genre :
echo -e "\e[1;31;42m Yes it is awful \e[0m"
Je connais un lien qui va aller tout droit dans les favoris, merci...
Hors ligne
#8 Le 26/01/2018, à 18:00
- Brice Jeunieaux
Re : [Résolu] Cumuler couleur + effets dans un script
Du coup, le problème est résolu, tout est bien qui finit bien ( insérer musique de type epic win Retour vers le futur ).
Merci à ceux qui ont pris la peine de réfléchir au problème, je vais passer le sujet en résolu.
P.-S. : désolé pour le triplon
Hors ligne
#9 Le 26/01/2018, à 18:31
- MicP
Re : [Résolu] Cumuler couleur + effets dans un script
NOTE :
Plutôt que \e qui ne sera interprétable que par bash
Il vaut mieux utiliser la séquence d'échappement en octal \033 qui sera interprété correctement par les deux interpréteurs de commandes bash et dash (sh)
Dernière modification par MicP (Le 26/01/2018, à 18:33)
Hors ligne