setf
được giới hạn chỉ 8 màu. setaf
có thể thiết lập tối đa 256 màu.
(tất cả các thông tin sau sẽ được dành riêng cho urxvt, vì đó là thiết bị đầu cuối của tôi, nhưng thông tin sẽ tương tự, nếu không giống như các thiết bị đầu cuối khác)
Cả hai setf
và setaf
cung cấp một mã thoát khác nhau. Bạn có thể xem điều này trong các điều sau đây:
# tput setf 2 | xxd
0000000: 1b5b 3332 6d .[32m
# tput setaf 2 | xxd
0000000: 1b5b 3338 3b35 3b32 6d .[38;5;2m
Từ urxvt(7)
trang người đàn ông của tôi :
"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)
Do đó, từ xxd
đầu ra trên , chúng ta có thể thấy rằng tput setf 2
sử dụng Pm = 32
, sẽ đặt màu thành màu xanh lá cây. tput setaf 2
mặt khác, sử dụng Pm = 38;5
, đại diện cho mã màu được xác định trong ISO 8613-6 (cũng là màu xanh lá cây).
Trong ISO 8613-6, màu 0x00-0x07 giống với màu tiêu chuẩn và 0x08 - 0x0f là màu "đậm" tiêu chuẩn. Khi bạn nhận được 0x10-0xff, bạn sẽ có được màu sắc mới.
Lấy cắp từ wikipedia :
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)
trang người đàn ông đi kèmncurses
để biết chi tiết.