J'écris un script Bash qui affiche du texte à l'écran:
echo "Some Text"
Puis-je formater le texte? Je voudrais le rendre audacieux.
La méthode la plus compatible consiste à utiliser tput
pour déterminer les séquences à envoyer au terminal:
bold=$(tput bold)
normal=$(tput sgr0)
alors vous pouvez utiliser les variables $bold
et $normal
pour formater les choses:
echo "this is ${bold}bold${normal} but this isn't"
donne
c'est gras mais ce n'est pas
Je suppose que bash s'exécute sur un terminal compatible vt100 dans lequel l'utilisateur n'a pas explicitement désactivé le support du formatage.
Commencez par activer la prise en charge des caractères spéciaux dans echo
à l’aide de l’option -e
. Plus tard, utilisez la séquence d'échappement ansi ESC[1m
, comme:
echo -e "\033[1mSome Text"
Plus d'informations sur les séquences d'échappement Ansi, par exemple ici: ascii-table.com/ansi-escape-sequences-vt-100.php
Pour appliquer un style à votre chaîne, vous pouvez utiliser une commande telle que:
echo -e '\033[1mYOUR_STRING\033[0m'
Explication:
-e
signifie que les chaînes échappées (anti-slashées) seront interprétéesLes entiers possibles sont:
En théorie comme ça:
# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line
# Using tput
tput bold
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL
# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line.
Mais dans la pratique, elle peut être interprétée comme une couleur "haute intensité".
(source: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )