Pada terminal tertentu yang kompatibel dengan XTerm / ANSI (seperti xterm
dan gnome-terminal
), Anda dapat mengatur warna menggunakan palet yang lebih besar daripada palet standar 8/16-warna (misalnya menggunakan palet 88-warna, 256-warna atau 16777216-warna (RGB) ; keduanya xterm
dan gnome-terminal
mendukung palet 256-warna dan 16777216-warna (RGB)); keberatan bahwa shell mungkin menimpa ini (ini adalah kasus misalnya untuk zsh
).
Berikut ini skrip untuk membuat daftar warna dalam palet 256-warna bersama dengan kode warna ANSI mereka di terminal yang kompatibel dengan XTerm / ANSI dengan dukungan palet 256-warna:
#!/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


Bergantung pada apakah Anda ingin menerapkan warna ke latar depan atau ke latar belakang, gunakan <fg_bg>
nilai 38
atau 48
(masing-masing) dalam perintah berikut:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Misalnya, untuk mengatur warna latar depan ( <fg_bg>
= 38
) menjadi merah ( <ANSI_color_code>
= 196
) dan warna latar belakang ( <fg_bg>
= 48
) menjadi hitam ( <ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'

Ini perlu untuk menggambar ulang prompt menggunakan printf '\e[K'
agar warna latar belakang berlaku untuk seluruh baris dan agar warna latar depan berlaku untuk kursor:
Hal yang sama dapat dicapai dengan menggunakan nilai RGB, bukan kode warna ANSI di terminal yang kompatibel; tergantung pada apakah Anda ingin menerapkan warna ke latar depan atau ke latar belakang, gunakan <fg_bg>
nilai 38
atau 48
(masing-masing) dalam perintah berikut:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Misalnya, untuk mengatur warna latar depan ( <fg_bg>
= 38
) menjadi merah ( <R>
= 255
, <G>
= 0
, <B>
= 0
) dan warna latar belakang ( <fg_bg>
= 48
) menjadi hitam ( <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'

Sekali lagi, perlu menggambar ulang prompt menggunakan printf '\e[K'
agar warna latar belakang berlaku untuk seluruh baris dan agar warna latar depan berlaku untuk kursor:

Menggunakan salah satu metode, Anda dapat menggunakan printf '\e[0m'
untuk mengatur ulang semua atribut:
