บนเทอร์มินัลที่เข้ากันได้กับ XTerm / ANSI (เช่นxterm
และgnome-terminal
) คุณสามารถตั้งค่าสีโดยใช้พาเล็ตที่ใหญ่กว่าจากพาเลต 8/16 สีที่เป็นค่าเริ่มต้น (ตัวอย่างเช่นการใช้พาเล็ต 88 สี 256 สีหรือ 16777216- สี (RGB) ; ทั้งสองxterm
และgnome-terminal
รองรับทั้ง 256 สีและ 16777216- สี (RGB) จานสี); โปรดทราบว่าเชลล์อาจลบล้างสิ่งนี้ (ในกรณีนี้คือ for zsh
)
ต่อไปนี้เป็นสคริปต์เพื่อแสดงรายการสีในจานสี 256 สีพร้อมกับรหัสสี ANSI ในเทอร์มินัลที่เข้ากันได้กับ XTerm / ANSI พร้อมการรองรับจานสี 256 สี:
#!/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
ขึ้นอยู่กับว่าคุณต้องการใช้สีกับพื้นหน้าหรือพื้นหลังใช้<fg_bg>
ค่า38
หรือ48
(ตามลำดับ) ในคำสั่งต่อไปนี้:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
ตัวอย่างเช่นการตั้งค่าสีพื้นหน้า ( <fg_bg>
= 38
) เป็นสีแดง ( <ANSI_color_code>
= 196
) และสีพื้นหลัง ( <fg_bg>
= 48
) เป็นสีดำ ( <ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
จำเป็นต้องวาดพรอมต์ที่ใช้printf '\e[K'
เพื่อให้สีพื้นหลังใช้กับทั้งบรรทัดและเพื่อให้สีพื้นหน้าใช้กับเคอร์เซอร์:
สิ่งเดียวกันสามารถทำได้โดยใช้ค่า RGB แทนรหัสสี ANSI ในเทอร์มินัลที่ใช้งานร่วมกันได้ ขึ้นอยู่กับว่าคุณต้องการใช้สีกับพื้นหน้าหรือพื้นหลังใช้<fg_bg>
ค่า38
หรือ48
(ตามลำดับ) ในคำสั่งต่อไปนี้:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
ตัวอย่างเช่นการตั้งค่าสีพื้นหน้า ( <fg_bg>
= 38
) เป็นสีแดง ( <R>
= 255
, <G>
= 0
, <B>
= 0
) และสีพื้นหลัง ( <fg_bg>
= 48
) เป็นสีดำ ( <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'
อีกครั้งจำเป็นต้องวาดพรอมต์ที่ใช้printf '\e[K'
เพื่อให้สีพื้นหลังใช้กับทั้งบรรทัดและเพื่อให้สีพื้นหน้าใช้กับเคอร์เซอร์:
ใช้วิธีใดวิธีหนึ่งคุณสามารถใช้printf '\e[0m'
เพื่อรีเซ็ตแอตทริบิวต์ทั้งหมด: