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.

181
demandé sur codeforester 2010-05-28 00:36:09

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

323
répondu psmears 2015-04-29 09:54:53

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

37
répondu Michał Trybus 2010-05-27 20:41:57

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
28
répondu avivamg 2017-12-05 11:29:51

, 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)

11
répondu roufamatic 2018-02-26 17:10:10