in văn bản màu bằng tiếng vang


25

Tôi biết rằng để in một văn bản màu bằng echo, ví dụ màu đỏ, mã là: echo -e "\e[1;31m This is red text \e[0m"
và tôi biết rằng trong ví dụ này, 31 là mã màu đỏ và số màu khác là:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

và đối với màu nền, num là 40 đến 47

Câu hỏi của tôi là thế này: những gì \e[m(sau 31) chính xác có nghĩa là ở đây?
Tôi đã đọc trong trang người đàn ông rằng \ e là thoát, nhưng tôi không hiểu ý nghĩa của nó.


Nói chung, bạn thoát khỏi các nhân vật có ý nghĩa đặc biệt trong bối cảnh kỹ thuật hiện tại. Ví dụ, các chuỗi thường được viết trong dấu ngoặc kép, "như thế này". Nhưng nếu bạn muốn dấu ngoặc kép trong một chuỗi, bạn phải thoát khỏi các ký tự đó để chúng được hiểu theo nghĩa đen và không phải là dấu phân cách. Ví dụ, echo "She said \"Hi\""đối với trường hợp này (câu hỏi của bạn), bạn sẽ phải chờ câu trả lời tốt hơn.
Emanuel Berg

Câu trả lời:


13

Chúng là một phần của 'Các phần tử trình tự' của các chuỗi thoát ANSI còn được gọi là các chuỗi ECMA-48 CSI ban đầu được thông qua vào năm 1976

Cụ thể hơn [là ' Trình tự giới thiệu trình tự '

Nhập man console_codeshầu hết mọi phân phối * nix để xem mã và một số tài liệu.


man 4 console_codekhông man console_code: Trong Ubuntu của tôi
0x6773

Tên trang thủ công kết thúc bằng "s" vì vậy "man console_codes" sẽ hiển thị đúng trang.
Mikko Rantalainen

4

Để được mã màu chính xác được xác định như dưới đây-

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

Vì vậy, về cơ bản, đó chỉ là cách thiết bị đầu cuối khác nhau diễn giải mã màu và bạn chú thích văn bản của bạn trong các yếu tố này. Đây là một cách kỳ lạ để làm cho thiết bị đầu cuối hiểu ý của bạn (như HexCodes hoặc Binary ..)


2

Tôi tìm thấy một lời giải thích tốt đẹp ở đây (ít nhất, tốt cho tôi :-) ). Tôi không chắc nó sẽ hữu ích cho bạn.

Để bắt đầu, nhập cái này trên bàn điều khiển của bạn:

echo "^[[0;31;40mIn Color"

Nhân vật đầu tiên là một nhân vật thoát, trông giống như hai nhân vật, ^ và [. Để có thể in này, bạn phải nhấn CTRL + V và sau đó nhấn phím ESC. Tất cả các ký tự khác là các ký tự có thể in bình thường, vì vậy bạn thấy chuỗi In Color có màu đỏ. Loại vẫn giữ màu đó cho đến khi bạn hoàn nguyên lại bằng cách gõ này:

Chúng là các mã thoát để đặt các chế độ màu trong thiết bị đầu cuối. Chỉ là khi được in bằng các ký tự thông thường, chúng trông như thế.


2

\elà tốc ký cho nhân vật Escape. các <ESC>[mlà dấu hiệu cho sự khởi đầu và kết thúc của chuỗi kiểm soát màu ANSI, mà là một tập hợp con của kiểm soát thiết bị đầu cuối ANSI trình tự. Hầu hết trong số chúng bắt đầu bằng <ESC>[, theo sau là một số, theo sau là một chữ cái cho biết chức năng nào đang được thực hiện (ví dụ: di chuyển con trỏ đến dòng; xóa đến cuối dòng, đưa con trỏ trở lại vị trí đã lưu, et cetera).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.