Risposte:
Il modo più compatibile per farlo è usare tput
per scoprire le giuste sequenze da inviare al terminale:
bold=$(tput bold)
normal=$(tput sgr0)
allora puoi usare le variabili $bold
e $normal
formattare le cose:
echo "this is ${bold}bold${normal} but this isn't"
dà
questo è audace ma non lo è
tput smul
tput
è un ottimo comando con molti comandi per molte attività diverse.
motd
file. Come / dove definirei le variabili $bold
e $normal
in quell'istanza?
Per applicare uno stile sulla tua stringa, puoi usare un comando come:
echo -e '\033[1mYOUR_STRING\033[0m'
Spiegazione:
-e
opzione indica che verranno interpretate le stringhe con escape (backslashed)I numeri interi possibili sono:
[0m
offre e questo lo spiega bene
\033[0m
3
- corsivo , almeno in konsole
Suppongo che bash sia in esecuzione su un terminale compatibile con vt100 in cui l'utente non ha disattivato esplicitamente il supporto per la formattazione.
Innanzitutto, attiva il supporto per i caratteri speciali in echo
, usando l' -e
opzione. Successivamente, utilizzare la sequenza di escape ansi ESC[1m
, come:
echo -e "\033[1mSome Text"
Maggiori informazioni sulle sequenze di escape ansi, ad esempio qui: ascii-table.com/ansi-escape-sequences-vt-100.php
echo -e "\033[1mSome Text\033[0m"
altrimenti anche le seguenti righe del tuo terminale saranno in grassetto
\033
che puoi usare \e
likeecho -e "\e[1msome text\e[0m"
In teoria così:
# 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.
In pratica, invece, può essere interpretato come colore "ad alta intensità".
(fonte: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )