Shell script et style
Publié : 27.03.2006 - 11h43 par philjfry
Bonjour
J'aimerais savoir si c'est (facilement) possible de styler les sorties (echo) en shell script, pour que certains caractères soient gras, italiques ou soulignés ,
comme dans les pages man, par exemple.
Merci
Publié : 27.03.2006 - 13h49 par Fabien
Je crains que non.
Les pages man utilisent un rendu particulier et une syntaxe particulière.
Très franchement ça doit être possible, mais je ne connais pas de solution simple.
Publié : 27.03.2006 - 17h31 par philjfry
Je m'en doutais un peu
Il faudrait apparemment passer par "grotty" et c'est trop compliqué pour ce que je voudrais faire
Publié : 29.03.2006 - 12h27 par Fabien
Je reviens sur ce que j'ai dit !!!
En fait c'est assez simple, il suffit d'utiliser l'option "-e" de "echo".
Par exemple pour un "Bonjour" en gras:
le "\033[1m" met la suite en gras et le "\033[0m" revient à la normale.
Quelques autres exemples:
Bold: \033[1m
Underline: \033[4m
Magenta: \033[35m
Yellow: \033[33m
Red: \033[31m
Publié : 29.03.2006 - 17h48 par philjfry
Merci mille fois !
le man de echo sur mon mac ne donne que ça pourtant :
et pour ceux que ça intéresse, ça marche même en python :
python -c "print '\033[1mBonjour\033[0m'"
Publié : 29.03.2006 - 18h30 par Fabien
Effectivement, cette fonction n'est pas documentée, va savoir pourquoi...
Publié : 30.03.2006 - 10h43 par milipili
Ce n'est pas documente dans echo puisque ce ne sont pas des options de echo mais des caracteres speciaux (si on peut appeller cela ainsi) gere par le shell (man bash -> builtin -> echo).
Publié : 30.03.2006 - 10h48 par milipili
D'aileurs voici la liste des codes couleurs. Ca peut etre utile (ici repris d'un code C/C++).
# define CL_BLACK "\033[22;30m"
# define CL_RED "\033[22;31m"
# define CL_GREEN "\033[22;32m"
# define CL_BROWN "\033[22;33m"
# define CL_BLUE "\033[22;34m"
# define CL_MAGENTA "\033[22;35m"
# define CL_CYAN "\033[22;36m"
# define CL_GRAY "\033[22;37m"
# define CL_DARKGRAY "\033[01;30m"
# define CL_LIGHTRED "\033[01;31m"
# define CL_LIGHTGREEN "\033[01;32m"
# define CL_YELLOW "\033[01;33m"
# define CL_LIGHTBLUE "\033[01;34m"
# define CL_LIGHTMAGENTA "\033[01;35m"
# define CL_LIGHTCYAN "\033[01;36m"
# define CL_WHITE "\033[01;37m"
Publié : 30.03.2006 - 10h57 par milipili
Euh ... j'ai raconte n'importque quoi ... C'est le terminal qui gere les caracteres speciaux ... Pas le shell ...
Publié : 01.04.2006 - 19h35 par philjfry
Merci. J'aimerai ajouter qu'avec un code en 4x (au lieu de 3x) il est aussi possible de mettre la couleur en arrière plan pex \033[
42m pour un arrière plan vert .
Ça marche aussi lors du démarrage en mode single user (pom-s au démarrage).
[edit]
Mais la colorisation ne marche pas si "désactiver la couleur ANSI" est choisi, dans Réglages de la fenêtre > couleur .
Code : Tout sélectionner
#!/bin/bash
#
esc="\033["
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=" "; line3=" "; line4=" "; line5=" "; line6=" ";
# 1 gras ; 4 souligne; 5 clignote ; 7 inverse ; 8 invisible,mais copi_collable?
# 2,3,6,9 : inactifs
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"
line3="${line3}${esc}${back};${fore};5m Blink ${esc}0m"
line4="${line4}${esc}${back};${fore};5;1m BBlink ${esc}0m"
line5="${line5}${esc}${back};${fore};4m Under ${esc}0m"
line6="${line6}${esc}${back};${fore};7;5;1m BInvert ${esc}0m"
done
echo -e "$line1\n$line2\n$line3\n$line5\n$line4\n$line6"
# oui, elles sont dans le desordre, pour mieux voir le souligne !
done
Je reviendrai quand j'aurai fait qqc d'utile avec tout ça !
(bientôt, peut être)