web-dev-qa-db-fra.com

Comment produire du texte en gras dans Bash?

J'écris un script Bash qui affiche du texte à l'écran:

echo "Some Text"

Puis-je formater le texte? Je voudrais le rendre audacieux.

212
JamesRat

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

378
psmears

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

43
Michał Trybus

Pour appliquer un style à votre chaîne, vous pouvez utiliser une commande telle que:

echo -e '\033[1mYOUR_STRING\033[0m'

Explication:

  • echo -e - L'option -e signifie que les chaînes échappées (anti-slashées) seront interprétées
  • \ 0 - la séquence d'échappement représente le début/la fin du style
  • m minuscule - indique la fin de la séquence
  • 1 - Attribut gras (voir ci-dessous pour plus d'informations)
  • [0m - réinitialise tous les attributs, couleurs, formatages, etc.

Les entiers possibles sont:

  • - Style normal
  • 1 - Gras
  • 2 - Dim
  • - Italique
  • 4 - Souligné
  • 5 - Clignotant
  • 7 - Reverse
  • 8 - Invisible
39
avivamg

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 )

13
roufamatic