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