Bei bestimmten XTerm / ANSI-kompatiblen Terminals (z. B. xterm
und gnome-terminal
) können Sie Farben mit einer Palette festlegen, die größer ist als die Standardpalette mit 8/16 Farben (z. B. 88 Farben, 256 Farben oder 16777216 Farben (RGB)) beide xterm
und gnome-terminal
unterstützen sowohl die 256-Farben- als auch die 16777216-Farben-Palette (RGB); Beachten Sie, dass die Shell dies möglicherweise außer Kraft setzt (dies ist z zsh
. B. der Fall für ).
Hier ist ein Skript zum Auflisten der Farben in der 256-Farben-Palette zusammen mit ihrem ANSI-Farbcode in XTerm / ANSI-kompatiblen Terminals mit Unterstützung für 256-Farben-Paletten:
#!/bin/bash
for((i=16; i<256; i++)); do
printf "\e[48;5;${i}m%03d" $i;
printf '\e[0m';
[ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done
Verwenden Sie je nachdem, ob Sie die Farbe auf den Vordergrund oder auf den Hintergrund anwenden möchten, den <fg_bg>
Wert 38
oder 48
(bzw.) im folgenden Befehl:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
So setzen Sie beispielsweise die Vordergrundfarbe ( <fg_bg>
= 38
) auf Rot ( <ANSI_color_code>
= 196
) und die Hintergrundfarbe ( <fg_bg>
= 48
) auf Schwarz ( <ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
Es ist notwendig, die Eingabeaufforderung mit neu zu zeichnen printf '\e[K'
, damit die Hintergrundfarbe auf die gesamte Zeile angewendet wird und damit die Vordergrundfarbe auf den Cursor angewendet wird:
Dasselbe kann mit RGB-Werten anstelle von ANSI-Farbcodes in einem kompatiblen Terminal erreicht werden. Verwenden Sie je nachdem, ob Sie die Farbe auf den Vordergrund oder auf den Hintergrund anwenden möchten, den <fg_bg>
Wert 38
oder 48
(bzw.) im folgenden Befehl:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
So setzen Sie beispielsweise die Vordergrundfarbe ( <fg_bg>
= 38
) auf Rot ( <R>
= 255
, <G>
= 0
, <B>
= 0
) und die Hintergrundfarbe ( <fg_bg>
= 48
) auf Schwarz ( <R>
= 0
, <G>
= 0
, <B>
= 0
):
printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'
Auch hier ist es notwendig, die Eingabeaufforderung mit neu zu zeichnen printf '\e[K'
, damit die Hintergrundfarbe auf die gesamte Linie angewendet wird und damit die Vordergrundfarbe auf den Cursor angewendet wird:
Mit beiden Methoden können Sie printf '\e[0m'
alle Attribute zurücksetzen: