Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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... wink


Ma question est donc : quelqu'un saurait-il comment cumuler les effets, en conservant ce système de variables (c'est la priorité) ? hmm
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. smile

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"

1517157525.png


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

bruno a écrit :

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. yikes
Comme quoi avec une simple erreur banale, on peut s'arracher les cheveux pendant un moment... roll
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

Hizoka a écrit :

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... wink

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. big_smile


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