setf
ist auf nur 8 Farben begrenzt. setaf
kann bis zu 256 Farben einstellen.
(Alle folgenden Informationen sind urxvt-spezifisch, da dies mein Terminal ist. Die Informationen sind jedoch ähnlich, wenn nicht gleich, wie bei anderen Terminals.)
Beides setf
und setaf
geben einen anderen Escape-Code an. Sie können dies im Folgenden anzeigen:
# tput setf 2 | xxd
0000000: 1b5b 3332 6d .[32m
# tput setaf 2 | xxd
0000000: 1b5b 3338 3b35 3b32 6d .[38;5;2m
Von meiner urxvt(7)
Manpage:
"ESC [ Pm m"
Character Attributes (SGR)
...
Pm = 30 / 40 fg/bg Black
Pm = 31 / 41 fg/bg Red
Pm = 32 / 42 fg/bg Green
Pm = 33 / 43 fg/bg Yellow
Pm = 34 / 44 fg/bg Blue
Pm = 35 / 45 fg/bg Magenta
Pm = 36 / 46 fg/bg Cyan
Pm = 37 / 47 fg/bg White
Pm = 38;5 / 48;5 set fg/bg to colour #m (ISO 8613-6)
Aus der obigen xxd
Ausgabe können wir also tput setf 2
ersehen Pm = 32
, dass die verwendet wird , wodurch die Farbe auf Grün gesetzt wird. tput setaf 2
Zum anderen verwendet man die Pm = 38;5
, die den in ISO 8613-6 definierten Farbcode darstellt (auch grün).
In ISO 8613-6 sind die Farben 0x00-0x07 die gleichen wie die Standardfarben und 0x08 - 0x0f sind die Standardfarben "fett". Sobald Sie 0x10-0xff erhalten, erhalten Sie neue Farben.
Aus Wikipedia gestohlen :
0x00-0x07: standard colors (as in ESC [ 30..37 m)
0x08-0x0f: high intensity colors (as in ESC [ 90..97 m)
0x10-0xe7: 6*6*6=216 colors: 16 + 36*r + 6*g + b (0≤r,g,b≤5)
0xe8-0xff: grayscale from black to white in 24 steps
terminfo(5)
mitgelieferten Manpagencurses
.