Vâng. Thiết bị đầu cuối ANSI hỗ trợ Mã thoát ANSI . Mỗi mã Control Sequence Introducer
( CSI
) theo định dạng sau:
ESC[<<<CODE>>>
Ký tự Ascii 27
( ESC
ký tự) hoặc 1b
ở dạng thập lục phân, theo sau là dấu ngoặc vuông bên trái và sau đó là một chữ cái biểu thị hành động sẽ được sử dụng.
Lưu ý rằng một danh sách các ;
tham số riêng biệt có thể được cung cấp trực tiếp trước <<<CODE>>>
tham số.
Bây giờ, màu sắc sử dụng một tập hợp con của CSI
mã, Select Graphic Rendition
mã. Đây là dưới dạng:
ESC[<<<SGR>>>m
Các SGR
code được thông qua như là một tham số CSI
. Liên quan đến câu hỏi của bạn là các SGR
mã 30-49. Mã 30-39 đặt màu nền trước. Mã 40-49 đặt màu nền.
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
Mã 38 và 48 là mã đặc biệt. Đây là những cái cho phép bạn sử dụng các giá trị RGB. Định dạng cho những điều này là:
ESC[38;2;<r>;<g>;<b>m (Foreground)
ESC[48;2;<r>;<g>;<b>m (Background)
Lưu ý: sử dụng thay thế bao gồm \x1b[<3 or 4>8;5;<web safe color index>m
. Với cách sử dụng này, có một bảng mã màu hoàn toàn khác. Xem liên kết ở đầu câu trả lời này để biết thêm thông tin.
Mã 39 và 49 đặt màu nền trước và màu nền cho mặc định của chúng, được xác định trên cơ sở từng thiết bị đầu cuối.
Trong thực tế, màu sắc 30-37 40-47 hơi khác so với những gì nhãn hiệu của chúng nói.
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
Để có được màu sáng, bạn sử dụng SGI cho đậm , 1
. In đậm là một cái tên sai lệch. Nó không làm cho phông chữ đậm. Nó thực sự làm tăng độ sáng của văn bản. Với đậm áp dụng màu sắc trở thành:
0 - Dark Grey
1 - Bright Red
2 - Bright Green
3 - Bright Yellow
4 - Bright Blue
5 - Bright Magenta
6 - Bright Cyan
7 - White
Lưu ý: hai khối màu cuối cùng có liên quan đến cả hai mặt trước và nền ( <index> + (30 or 40)
).
Để xóa tất cả các kiểu (trở về chế độ mặc định / bình thường), sử dụng SGR
0.
CSI
mã không phải là tất cả đồ họa. Ví dụ, ESC[2J
sẽ xóa thiết bị đầu cuối của bạn. ESC[<y>;<x>H
đặt vị trí con trỏ (1 chỉ mục). Xem bài viết trên wikipedia để biết thêm thông tin.
Lưu ý: để kiểm tra những cái này, sử dụng echo -e
hoặc printf
.