Comment sort-on un texte en gras dans Bash?
J'écris un script Bash qui imprime du texte à l'écran:
echo "Some Text"
Puis-je formater le texte? Je voudrais le rendre audacieux.
4 réponses
La façon la plus compatible de le faire est d'utiliser tput
pour découvrir les bonnes séquences à envoyer au terminal:
bold=$(tput bold)
normal=$(tput sgr0)
Ensuite, 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 fonctionne sur un terminal compatible vt100 dans lequel l'utilisateur n'a pas explicitement désactivé le support du formatage.
Tout d'abord, activez la prise en charge des caractères spéciaux dans echo
, en utilisant l'option -e
. Plus tard, utilisez la séquence d'échappement ansi ESC[1m
, comme:
echo -e "\033[1mSome Text"
Plus sur les séquences d'échappement ansi par exemple ici: ascii-table.com/ansi-escape-sequences-vt-100.php
Pour appliquer un style sur votre chaîne, vous pouvez utiliser une commande comme:
echo -e '\033[1mYOUR_STRING\033[0m'
Explication:
-
echo-e - L'option
-e
signifie que les chaînes échappées (antislashées) seront interprétées - \033 - la séquence échappée représente le début / la fin du style
- m minuscule - indique la fin de la séquence
- 1 - attribut Gras (voir ci-dessous)
- [0m - réinitialise tous les attributs, les couleurs, la mise en forme, etc.
Les entiers possibles sont:
- 0 - Style Normal
- 1 - Gras
- 2 - Dim
- 4 - Souligné
- 5 - clignotement
- 7 - Inverse
- 8 - Invisible
, En théorie, comme ceci:
# 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 en pratique, il peut être interprété comme une couleur" haute intensité " à la place.
(source: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html)