Odpowiedzi:
Najbardziej kompatybilnym sposobem jest użycie tput
odpowiednich sekwencji do wysłania do terminala:
bold=$(tput bold)
normal=$(tput sgr0)
wtedy możesz użyć zmiennych $bold
i $normal
sformatować rzeczy:
echo "this is ${bold}bold${normal} but this isn't"
daje
to jest odważne, ale nie jest
tput smul
tput
to świetne polecenie z dużą ilością poleceń do wielu różnych zadań.
motd
plikiem. Jak / gdzie miałbym zdefiniować zmienne $bold
i $normal
w tym przypadku?
Aby zastosować styl do łańcucha, możesz użyć polecenia takiego jak:
echo -e '\033[1mYOUR_STRING\033[0m'
Wyjaśnienie:
-e
Opcja oznacza, że znaki specjalne (odwrócone) zostaną zinterpretowaneMożliwe liczby całkowite to:
[0m
oferuje funkcjonalność, co dobrze to tłumaczy
\033[0m
3
- kursywą , przynajmniej w konsoli
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 echo
za pomocą -e
opcji. Później użyj sekwencji ucieczki ansi ESC[1m
, na przykład:
echo -e "\033[1mSome Text"
Więcej informacji o sekwencjach ucieczki ansi, na przykład tutaj: ascii-table.com/ansi-escape-sequences-vt-100.php
echo -e "\033[1mSome Text\033[0m"
w przeciwnym razie następujące wiersze twojego terminalu również będą pogrubione
\033
można użyć \e
jakecho -e "\e[1msome text\e[0m"
Teoretycznie 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żna to interpretować jako kolor „wysokiej intensywności”.
(źródło: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )