Vorgehensweise: Unterstreichen, Fett, Kursiv, Durchgestrichen und Farbe in Gnome Terminal?
Fett gedruckt
Kursiv
unterstreichen
s̶t̶r̶i̶k̶e̶ ̶i̶t̶ ̶l̶i̶k̶e̶̶ ̶i̶t̶s̶ ̶h̶o̶t
background
font
<(es ist mono wenn du es nicht sagen konntest)
Vorgehensweise: Unterstreichen, Fett, Kursiv, Durchgestrichen und Farbe in Gnome Terminal?
Fett gedruckt
Kursiv
unterstreichen
s̶t̶r̶i̶k̶e̶ ̶i̶t̶ ̶l̶i̶k̶e̶̶ ̶i̶t̶s̶ ̶h̶o̶t
background
font
<(es ist mono wenn du es nicht sagen konntest)
Antworten:
Die ANSI / VT100-Terminals und Terminalemulatoren können nicht nur schwarzen und weißen Text anzeigen. Dank Escape-Sequenzen können sie Farben und formatierte Texte anzeigen. Diese Sequenzen bestehen aus dem Escape-Zeichen (häufig durch "^ [" oder "Esc" dargestellt), gefolgt von einigen anderen Zeichen: "Esc [FormatCodem".
In Bash kann das Zeichen mit den folgenden Syntaxen erhalten werden:
\e
\033
\x1B
Die Befehle (zum einfachen Kopieren und Einfügen):
echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"
echo -e "\e[31mHello World\e[0m"
echo -e "\x1B[31mHello World\e[0m"
Quelle (einschließlich aller Arten von Vordergrund- / Hintergrundfarbcodes): http://misc.flogisoft.com/bash/tip_colors_and_formatting
/apps/gnome-terminal/profiles/Default/font
)
PS1
(eigentlich im Gnome-Terminal) verwenden wollte, weil das Unterstreichen des Textes darunter das Lesen erschwert und das Durchstreichen natürlich einfach falsch aussah. Wenn Sie dort eine Linie haben, können Sie die vorherigen Befehle beim Scrollen besser erkennen (Farbe auch).
Um Sylvains Antwort zu erweitern, gibt es einige Hilfsfunktionen:
ansi() { echo -e "\e[${1}m${*:2}\e[0m"; }
bold() { ansi 1 "$@"; }
italic() { ansi 3 "$@"; }
underline() { ansi 4 "$@"; }
strikethrough() { ansi 9 "$@"; }
red() { ansi 31 "$@"; }
Dann
Was bisher noch nicht behandelt wurde, ist die Kombination von zwei oder drei Parametern, z. B. fett und unterstrichen , in einer vordefinierten Farbe. Dies wird durch eine 3-Wege-Syntax erreicht, zum Beispiel:
~$ printf "\e[3;4;33mthis is a test\n\e[0m"
bewirkt, dass "dies ist ein Test" in gelber Farbe ( 33m
), kursiv ( 3m
) UND unterstrichen ( 4m
) gedruckt wird .
Beachten Sie, dass nicht\e[
jedes Mal eine Wiederholung erforderlich ist .
Beachten Sie auch, dass ich (wie Sylvain) \e[0m
jedes Mal ein hinzugefügt habe , um die Einstellungen zurückzusetzen, da sonst die gelbe Farbe und der Schriftstil im Terminal aktiv bleiben! Unnötig zu erwähnen, dass Sie unbedingt darauf achten müssen, dass diese in Skripten zurückgesetzt werden, da Benutzer, die Ihre Skripten verwenden, es möglicherweise ablehnen, wenn Ihr Skript ihre Farb- und Stileinstellungen im Terminal dauerhaft ändert!
GNOME Terminal 3.28 (VTE 0.52), das in Ubuntu 18.04 LTS debütiert, bietet Unterstützung für einige weitere Stile, darunter geschweifte und farbige Unterstreichungen wie in Kitty, Überstrichen wie in Konsole, und schließlich das beliebte oder verhasste Blink-Attribut aller.
Diese funktionieren auch automatisch in jedem anderen VTE-basierten Terminalemulator (z. B. Tilix, Terminator, Xfce4-Terminal, Guake usw.), vorausgesetzt, dass VTE mindestens die Version 0.52 hat.
Hier ist eine Liste, die die Standard-Escape-Sequenzen sowie die Ergänzungen des GNOME-Terminals (VTE) zeigt. Beachten Sie, dass ich für jede Eröffnungssequenz auch nur die Abschlusssequenz dieser Eigenschaft zeige und nicht die generische, \e[m
oder \e[0m
die alle Spezialmodi deaktiviert.
echo -e '\e[1mbold\e[22m'
echo -e '\e[2mdim\e[22m'
echo -e '\e[3mitalic\e[23m'
echo -e '\e[4munderline\e[24m'
echo -e '\e[4:1mthis is also underline (new in 0.52)\e[4:0m'
echo -e '\e[21mdouble underline (new in 0.52)\e[24m'
echo -e '\e[4:2mthis is also double underline (new in 0.52)\e[4:0m'
echo -e '\e[4:3mcurly underline (new in 0.52)\e[4:0m'
echo -e '\e[5mblink (new in 0.52)\e[25m'
echo -e '\e[7mreverse\e[27m'
echo -e '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'
echo -e '\e[9mstrikethrough\e[29m'
echo -e '\e[53moverline (new in 0.52)\e[55m'
echo -e '\e[31mred\e[39m'
echo -e '\e[91mbright red\e[39m'
echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[39m'
echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[39m'
echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) (new in 0.52)\e[39m'
echo -e '\e[38:2:240:143:104mtruecolor, rarely used incorrect format (might be removed at some point)\e[39m'
echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[39m'
echo -e '\e[46mcyan background\e[49m'
echo -e '\e[106mbright cyan background\e[49m'
echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[49m'
echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[49m'
echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) (new in 0.52)\e[49m'
echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[49m'
echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[49m'
echo -e '\e[21m\e[58:5:42m256-color underline (new in 0.52)\e[59m\e[24m'
echo -e '\e[21m\e[58;5;42m256-color underline (new in 0.52)\e[59m\e[24m'
echo -e '\e[4:3m\e[58:2::240:143:104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'
echo -e '\e[4:3m\e[58:2:240:143:104mtruecolor underline (new in 0.52) (might be removed at some point) (*)\e[59m\e[4:0m'
echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'
(*) Truecolor-Werte für Unterstreichungen sind leicht angenähert.
Und ein bisschen seltsam, das nicht ganz in dieses Bild passt, da es eher eine Funktionalität als ein Stil ist, aber wahrscheinlich erwähnenswert ist, ist die Hyperlink- Unterstützung, die in Zusammenarbeit mit iTerm2 entwickelt wurde und seit GNOME Terminal 3.26 (VTE 0.50) verfügbar ist. :
echo -e '\e]8;;http://askubuntu.com\e\\hyperlink\e]8;;\e\\'
Ersetzen Sie diese fest codierten Sequenzen durch:
tput smul # set underline
tput rmul # remove underline
tput smso # set bold on
tput rmso # remove bold
tput setaf 1 #red
tput setaf 2 #green
...
tput cup 0 0 # move to pos 0,0
Eine vollständige Beschreibung dieser Befehle finden Sie unter "man terminfo" und "man tput".
Beispiel
function f_help
{
c_green=$(tput setaf 2 2>/dev/null)
c_reset=$(tput sgr0 2>/dev/null)
c_bold=$(tput smso 2>/dev/null)
echo "${c_bold}DESCRIPTION${c_reset} : .... ${c_green}My green text${c_reset}My plain text"
}