Vorgehensweise: Unterstreichen, Fett, Kursiv, Durchgestrichen, Farbe, Hintergrund und Größe in Gnome Terminal?

58

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

Farbe

background

font <(es ist mono wenn du es nicht sagen konntest)

Größe

Akiva
quelle
1
Und was genau will man ändern? Die Eingabeaufforderung, der eingegebene Text, die Ausgabe Ihrer Befehle?
Radu Rădeanu
exportiere PS1 eigentlich. Obwohl ich es auch für das Grundecho mag.
Akiva
1
Wenn es "Faint" unterstützen würde, würde ich wechseln. :(
Jürgen A. Erhard

Antworten:

75

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

Bildbeschreibung hier eingeben

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

Sylvain Pineau
quelle
Ich habe drei weitere für Größe, Schriftart und Hintergrund hinzugefügt. Sind diese möglich?
Akiva,
1
@Akiva Sie können die Hintergrundfarbe leicht ändern (siehe den entsprechenden Abschnitt ). Was die Größe betrifft, denke ich nicht, dass es möglich ist. Für die Schriftart ist die einzige Einstellung ein globaler gconf-Wert ( /apps/gnome-terminal/profiles/Default/font)
Sylvain Pineau
1
@dashesy: ​​Laut en.wikipedia.org/wiki/ANSI_escape_code sollte 53 den Overline machen. Aber in meinem Endgerät tut sich nichts.
Sylvain Pineau
1
@egmont Ich erinnere mich, dass ich es in 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).
Bindestrich
1
@dashesy Danke, es ist eigentlich ein ziemlich cooler Anwendungsfall :) Gnome-Terminal-Fortschritt wird hier verfolgt .
egmont
26

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

Bildbeschreibung hier eingeben

Glenn Jackman
quelle
20

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[0mjedes 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!

Syntax-Fehler
quelle
16

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[moder \e[0mdie 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\\'

Hier ist ein Screenshot, der das Ergebnis zeigt: Rendern im Gnome-Terminal 3.28

egmont
quelle
2
Ein Screenshot des Ergebnisses wäre sehr schön für diejenigen von uns, die nicht über diese Gnome-Terminal / VTE-Versionen verfügen.
Marius Gedminas
@MariusGedminas Fertig.
Egmont
Geniale Antwort! Vielen Dank, dass Sie sich die Zeit genommen haben, all dies zu sammeln! Ich frage mich, ob sie auch auf iTerm2 arbeiten (werde versuchen, das in Kürze selbst zu überprüfen ...)
31.
2

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" }

FCA
quelle