setf
จำกัด 8 สีเท่านั้น setaf
สามารถตั้งค่าได้สูงสุด 256 สี
(ข้อมูลทั้งหมดต่อไปนี้จะเฉพาะเจาะจงกับ urxvt เช่นเดียวกับเทอร์มินัลของฉัน แต่ข้อมูลจะคล้ายกับหากไม่เหมือนกันกับเทอร์มินัลอื่น ๆ )
ทั้งคู่setf
และsetaf
ระบุรหัสการยกเว้นที่แตกต่างกัน คุณสามารถดูสิ่งต่อไปนี้:
# tput setf 2 | xxd
0000000: 1b5b 3332 6d .[32m
# tput setaf 2 | xxd
0000000: 1b5b 3338 3b35 3b32 6d .[38;5;2m
จากurxvt(7)
หน้าคนของฉัน:
"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)
ดังนั้นจากxxd
ผลลัพธ์ข้างต้นเราจะเห็นว่าtput setf 2
ใช้Pm = 32
ซึ่งจะตั้งค่าสีเป็นสีเขียว tput setaf 2
ในทางกลับกันใช้Pm = 38;5
, ซึ่งได้รับหมายถึงรหัสสีที่กำหนดไว้ใน ISO 8613-6 (ยังเป็นสีเขียว)
ใน ISO 8613-6 สี 0x00-0x07 เหมือนกับสีมาตรฐานและ 0x08 - 0x0f เป็นสี "ตัวหนา" มาตรฐาน เมื่อคุณไปถึง 0x10-0xff คุณจะได้รับสีใหม่
ขโมยมาจากวิกิพีเดีย :
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)
หน้าคนที่มาพร้อมกับncurses
รายละเอียด