Comment faire : soulignement, gras, italique, barré, et couleur dans le terminal Gnome ?
Gras
Italique
souligner
le frapper comme si c'était chaud
background
font
< (c'est mono si vous ne pouviez pas le dire)
Comment faire : soulignement, gras, italique, barré, et couleur dans le terminal Gnome ?
Gras
Italique
souligner
le frapper comme si c'était chaud
background
font
< (c'est mono si vous ne pouviez pas le dire)
Les terminaux ANSI/VT100 et les émulateurs de terminaux ne sont pas seulement capables de d'afficher du texte en noir et blanc, mais aussi en couleurs et en formaté et des textes formatés grâce à des séquences d'échappement. Ces séquences sont composées du caractère d'échappement (souvent représenté par "^[" ou "Esc") suivi de d'autres caractères : "Esc[FormatCodem".
En Bash, le caractère peut être obtenu avec les syntaxes suivantes :
\e
\033
\x1B
Les commandes (pour un copier-coller facile) :
echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[3m\e[1mbold italic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"
echo -e "\e[31mHello World\e[0m"
echo -e "\x1B[31mHello World\e[0m"
Source (y compris tous les types de codes de couleur avant-plan/arrière-plan) : http://misc.flogisoft.com/bash/tip_colors_and_formatting
GNOME Terminal 3.28 (VTE 0.52), qui fait ses débuts dans Ubuntu 18.04 LTS, ajoute la prise en charge de quelques styles supplémentaires, notamment les soulignements frisés et colorés comme dans Kitty, le surlignage comme dans Konsole, et enfin l'attribut de clignotement tant aimé ou tant détesté par tous.
Ils fonctionnent aussi automatiquement dans tout autre émulateur de terminal basé sur VTE (par exemple Tilix, Terminator, Xfce4-terminal, Guake etc.), à condition que VTE soit au moins à la version 0.52.
Voici une liste présentant les séquences d'échappement standard, ainsi que les ajouts du terminal GNOME (VTE). Notez que pour chaque séquence d'ouverture, je montre également la séquence de fermeture de cette propriété uniquement, plutôt que la séquence générique \e[m
o \e[0m
qui désactive tous les modes spéciaux.
echo -e '\e[1mbold\e[22m'
echo -e '\e[2mdim\e[22m'
echo -e '\e[3mitalic\e[23m'
echo -e '\e[4munderline\e[24m'
echo -e '\e[4:1mthis is also underline (new in 0.52)\e[4:0m'
echo -e '\e[21mdouble underline (new in 0.52)\e[24m'
echo -e '\e[4:2mthis is also double underline (new in 0.52)\e[4:0m'
echo -e '\e[4:3mcurly underline (new in 0.52)\e[4:0m'
echo -e '\e[5mblink (new in 0.52)\e[25m'
echo -e '\e[7mreverse\e[27m'
echo -e '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'
echo -e '\e[9mstrikethrough\e[29m'
echo -e '\e[53moverline (new in 0.52)\e[55m'
echo -e '\e[31mred\e[39m'
echo -e '\e[91mbright red\e[39m'
echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[39m'
echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[39m'
echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) (new in 0.52)\e[39m'
echo -e '\e[38:2:240:143:104mtruecolor, rarely used incorrect format (might be removed at some point)\e[39m'
echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[39m'
echo -e '\e[46mcyan background\e[49m'
echo -e '\e[106mbright cyan background\e[49m'
echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[49m'
echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[49m'
echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) (new in 0.52)\e[49m'
echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[49m'
echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[49m'
echo -e '\e[21m\e[58:5:42m256-color underline (new in 0.52)\e[59m\e[24m'
echo -e '\e[21m\e[58;5;42m256-color underline (new in 0.52)\e[59m\e[24m'
echo -e '\e[4:3m\e[58:2::240:143:104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'
echo -e '\e[4:3m\e[58:2:240:143:104mtruecolor underline (new in 0.52) (might be removed at some point) (*)\e[59m\e[4:0m'
echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'
(*) Les valeurs Truecolor pour les soulignements sont légèrement approximatives.
Et un autre élément un peu étrange qui n'a pas sa place dans ce tableau, car il s'agit plus d'une fonctionnalité que d'un style, mais qui mérite d'être mentionné ici. lien hypertexte support co-conçu avec iTerm2, disponible depuis GNOME Terminal 3.26 (VTE 0.50) :
echo -e '\e]8;;http://askubuntu.com\e\\hyperlink\e]8;;\e\\'
Un point qui n'a pas encore été abordé est le combinaison de deux ou trois paramètres, par ex. en gras y souligner dans une couleur prédéfinie. Ceci est réalisé par une syntaxe à 3 voies, par exemple :
~$ printf "\e[3;4;33mthis is a test\n\e[0m"
fera en sorte que "ceci est un test" soit imprimé en couleur jaune ( 33m
), italique ( 3m
) ET souligné ( 4m
).
Notez que c'est no nécessaire de répéter le \e[
à chaque fois.
Notez aussi que (comme Sylvain) j'ai aussi ajouté un \e[0m
pour réinitialiser les paramètres à chaque fois, car sinon la couleur jaune et le style de police resteront actifs dans le terminal ! Inutile de dire que vous devez absolument faire attention à ce qu'ils soient réinitialisés dans scripts, car les utilisateurs qui utilisent vos scripts peuvent ne pas apprécier si votre scripts. en permanence modifie leurs paramètres de couleur + style dans le terminal !
Remplacez ces séquences codées en dur par :
tput smul # set underline
tput rmul # remove underline
tput smso # set bold on
tput rmso # remove bold
tput setaf 1 #red
tput setaf 2 #green
...
tput cup 0 0 # move to pos 0,0
Reportez-vous à "man terminfo" et "man tput" pour une description complète de ces commandes.
Exemple :
function f_help
{
c_green=$(tput setaf 2 2>/dev/null)
c_reset=$(tput sgr0 2>/dev/null)
c_bold=$(tput smso 2>/dev/null)
echo "${c_bold}DESCRIPTION${c_reset} : .... ${c_green}My green text${c_reset}My plain text"
}
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.