Antworten:
Der kompatibelste Weg, dies zu tun, besteht tput
darin, die richtigen Sequenzen zu ermitteln, die an das Terminal gesendet werden sollen:
bold=$(tput bold)
normal=$(tput sgr0)
dann können Sie die Variablen verwenden $bold
und $normal
Dinge formatieren:
echo "this is ${bold}bold${normal} but this isn't"
gibt
das ist mutig, aber das ist nicht
tput smul
tput
ist ein großartiger Befehl mit vielen Befehlen für viele verschiedene Aufgaben.
motd
Datei. Wie / wo würde ich die $bold
und $normal
Variablen in dieser Instanz definieren?
Um einen Stil auf Ihre Zeichenfolge anzuwenden, können Sie einen Befehl wie den folgenden verwenden:
echo -e '\033[1mYOUR_STRING\033[0m'
Erläuterung:
-e
Option bedeutet, dass maskierte (umgekehrte) Zeichenfolgen interpretiert werdenDie möglichen ganzen Zahlen sind:
[0m
umgesehen und das erklärt es gut
\033[0m
3
- kursiv , zumindest in konsole
Ich gehe davon aus, dass bash auf einem vt100-kompatiblen Terminal ausgeführt wird, in dem der Benutzer die Unterstützung für die Formatierung nicht explizit deaktiviert hat.
Aktivieren Sie zunächst die Unterstützung für Sonderzeichen in echo
mit der -e
Option. Verwenden Sie später die Ansi-Escape-Sequenz ESC[1m
wie:
echo -e "\033[1mSome Text"
Mehr zu Ansi-Escape-Sequenzen zum Beispiel hier: ascii-table.com/ansi-escape-sequences-vt-100.php
echo -e "\033[1mSome Text\033[0m"
zu
\033
, können Sie \e
wieecho -e "\e[1msome text\e[0m"
In der Theorie so:
# 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 der Praxis kann es jedoch stattdessen als Farbe mit "hoher Intensität" interpretiert werden.
(Quelle: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )