Iya nih. Terminal ANSI mendukung Kode Escape ANSI . Masing-masing Control Sequence Introducer
( CSI
) Kode dalam format berikut:
ESC[<<<CODE>>>
Karakter Ascii 27
( ESC
karakter) atau 1b
dalam heksadesimal, diikuti oleh tanda kurung siku kiri, dan kemudian sebuah surat yang menunjukkan tindakan yang akan digunakan.
Perhatikan bahwa daftar ;
parameter yang terpisah dapat diberikan secara langsung sebelum <<<CODE>>>
parameter.
Sekarang, warna menggunakan subset CSI
kode, Select Graphic Rendition
kode. Ini dalam bentuk:
ESC[<<<SGR>>>m
The SGR
kode dilewatkan sebagai parameter CSI
. Yang relevan dengan pertanyaan Anda adalah SGR
kode 30-49. Kode 30-39 mengatur warna latar depan. Kode 40-49 mengatur warna latar belakang.
30 - Foreground Black
31 - Foreground Red
32 - Foreground Green
33 - Foreground Yellow
34 - Foreground Blue
35 - Foreground Magenta
36 - Foreground Cyan
37 - Foreground White
40 - Background Black
41 - Background Red
42 - Background Green
43 - Background Yellow
44 - Background Blue
45 - Background Magenta
46 - Background Cyan
47 - Background White
Kode 38 dan 48 adalah kode khusus. Ini adalah yang memungkinkan Anda untuk menggunakan nilai RGB. Format untuk ini adalah:
ESC[38;2;<r>;<g>;<b>m (Foreground)
ESC[48;2;<r>;<g>;<b>m (Background)
Catatan: penggunaan alternatif termasuk \x1b[<3 or 4>8;5;<web safe color index>m
. Dengan penggunaan ini, ada penyandian warna yang sangat berbeda. Lihat tautan di bagian atas jawaban ini untuk informasi lebih lanjut.
Kode 39 dan 49 mengatur warna foreground dan background menjadi default, yang didefinisikan berdasarkan terminal-per-terminal.
Dalam praktiknya, warna 30-37 40-47 sedikit berbeda dari apa yang label mereka katakan.
0 - Black
1 - Darker Red
2 - Darker Green
3 - Dark/Yellow or Brown (varies between terminals)
4 - Dark Blue
5 - Dark Magenta
6 - Dark Cyan
7 - Light Grey
Untuk mendapatkan warna terang, Anda menggunakan SGI untuk cetak tebal 1
,. Bold adalah nama yang menyesatkan. Itu tidak membuat font menjadi tebal. Ini sebenarnya meningkatkan kecerahan teks. Dengan berani diterapkan warna menjadi:
0 - Dark Grey
1 - Bright Red
2 - Bright Green
3 - Bright Yellow
4 - Bright Blue
5 - Bright Magenta
6 - Bright Cyan
7 - White
Perhatikan: dua blok terakhir dari nomor warna relevan untuk latar depan dan belakang ( <index> + (30 or 40)
).
Untuk menghapus semua gaya (kembali ke mode default / normal) gunakan SGR
0.
CSI
kode tidak semuanya grafis. Misalnya, ESC[2J
akan menghapus terminal Anda. ESC[<y>;<x>H
mengatur posisi kursor (1-diindeks). Lihat artikel wikipedia untuk informasi lebih lanjut.
Catatan: untuk menguji ini, gunakan echo -e
atau printf
.