Jak można wydrukować pogrubiony tekst w Bash?

Piszę skrypt Basha, który wyświetla tekst na ekranie:

echo "Some Text"

Czy mogę sformatować tekst? Chciałbym, żeby to było śmiałe.

Author: codeforester, 2010-05-28

4 answers

Najbardziej zgodnym sposobem jest użycie tput, aby odkryć właściwe sekwencje do wysłania do terminala:

bold=$(tput bold)
normal=$(tput sgr0)

Następnie możesz użyć zmiennych $bold i $normal do sformatowania rzeczy:

echo "this is ${bold}bold${normal} but this isn't"

Daje

To jest pogrubienie ale to nie jest

 323
Author: psmears,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-29 09:54:53

Zakładam, że bash działa na terminalu kompatybilnym z VT100, w którym Użytkownik nie wyłączył obsługi formatowania.

Najpierw włącz obsługę znaków specjalnych w echo, używając opcji -e. Następnie użyj sekwencji ucieczki ansi ESC[1m, Jak:

echo -e "\033[1mSome Text"

Więcej o sekwencjach ucieczki ansi na przykład tutaj: ascii-table.com/ansi-escape-sequences-vt-100.php

 37
Author: Michał Trybus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-27 20:41:57

Aby zastosować styl na Twoim łańcuchu, możesz użyć polecenia:

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

Wyjaśnienie:

  • echo-e - opcja -e oznacza, że zostaną zinterpretowane znaki ucieczki (z odwróconym ukośnikiem)
  • \033 - sekwencja ucieczki reprezentuje początek / zakończenie stylu
  • małe litery m - oznacza koniec sekwencji
  • 1 - pogrubiony atrybut (Zobacz więcej poniżej)
  • [0m - resetuje wszystkie atrybuty, kolory, formatowanie itp.

Możliwe liczby całkowite to:

  • 0 - Styl Normalny
  • 1 - pogrubienie
  • 2 - Dim
  • 4 - podkreślone
  • 5 - Blinking
  • 7 - rewers
  • 8 - Invisible
 28
Author: avivamg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-05 11:29:51

W teorii tak:

# 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. 

Ale w praktyce może być interpretowany jako "high intensity" kolor zamiast.

(źródło: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )

 11
Author: roufamatic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-26 17:10:10