setf
jest ograniczony tylko do 8 kolorów. setaf
można ustawić do 256 kolorów.
(wszystkie poniższe informacje będą specyficzne dla urxvt, ponieważ to jest mój terminal, ale informacje będą podobne, jeśli nie takie same, jak inne terminale)
Oba setf
i setaf
zapewniają inny kod ucieczki. Możesz to zobaczyć w następujący sposób:
# tput setf 2 | xxd
0000000: 1b5b 3332 6d .[32m
# tput setaf 2 | xxd
0000000: 1b5b 3338 3b35 3b32 6d .[38;5;2m
Z mojej urxvt(7)
strony man:
"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)
Zatem z powyższego xxd
wyjścia możemy zobaczyć, że tput setf 2
używa Pm = 32
, który ustawi kolor na zielony. tput setaf 2
z drugiej strony używa Pm = 38;5
, który dostaje reprezentuje kod koloru zdefiniowany w ISO 8613-6 (także zielony).
W ISO 8613-6 kolory 0x00-0x07 są takie same jak kolory standardowe, a 0x08 - 0x0f to standardowe kolory „pogrubione”. Gdy dojdziesz do 0x10-0xff, otrzymasz nowe kolory.
Skradzione z wikipedii :
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)
stronie podręcznika użytkownikancurses
.