друк кольорового тексту за допомогою відлуння


25

Я знаю, що для друку кольорового тексту за допомогою відлуння, наприклад червоного кольору, код такий: echo -e "\e[1;31m This is red text \e[0m"
і я знаю, що в цьому прикладі 31 код червоного кольору, а кількість інших кольорів:

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

а для кольорів фону кількість - від 40 до 47

моє питання полягає в наступному: що \eі [та m(після 31) означає в точності тут?
На сторінці man я прочитав, що \ e - це втеча, але не зрозумів, що це означає.


Загалом, ви уникаєте персонажів, які мають особливі значення в поточному технічному контексті. Наприклад, рядки часто записуються в цитатах "як це". Але якщо ви хочете, щоб лапки були в рядку, ви повинні уникати цих символів, щоб вони тлумачились буквально, а не як роздільники. Наприклад, що echo "She said \"Hi\""стосується цього випадку (вашого запитання), вам доведеться почекати кращої відповіді.
Емануель Берг

Відповіді:


13

Вони входять до складу «елементів послідовності» послідовностей виходу ANSI, також відомих як послідовності CSI ECMA-48, спочатку прийнятих у 1976 році

Більш конкретно, [це " Введення послідовності управління "

Введіть man console_codesмайже будь-який * nix distro, щоб побачити коди та деякі документи.


man 4 console_codeнемає man console_code: У моєму ubuntu
0x6773

Назва сторінки вручну закінчується символом "s", тому "man console_codes" має відображати правильну сторінку.
Mikko Rantalainen

4

Щоб бути точними, коди кольорів визначаються нижче:

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

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

Тому в основному так, як різні термінали інтерпретують кольорові коди, і ви надписуєте текст у цих елементах. Це незвичайний спосіб, щоб термінал зрозумів, що ви маєте на увазі (наприклад, HexCodes або Binary ..)


2

Я знайшов гарне пояснення тут (принаймні, добре для мене :-) ). Я не впевнений, чи стане вам це корисним.

Для початку введіть це на консолі:

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

Перший символ - це символ втечі, який має вигляд двох символів, ^ і [. Щоб мати можливість роздрукувати це, вам потрібно натиснути CTRL + V, а потім клавішу ESC. Усі інші символи - це звичайні символи для друку, тому ви бачите рядок у кольорі червоним кольором. Тип зберігає цей колір, поки не відновиться назад, ввівши це:

Вони є кодами евакуації для встановлення кольорових режимів у терміналі. Це просто те, що друкуються звичайними символами, вони виглядають так.


2

\eце скорочення для персонажа Escape. - <ESC>[і m- це маркери для початку та кінця послідовностей управління кольором ANSI, які є підмножиною послідовності управління терміналом ANSI. Більшість з них починається з <ESC>[наступного числа, після чого - літера, яка вказує, яка функція реалізована (наприклад, переміщення курсору до рядка; очищення до кінця рядка, повернення курсору до збереженого місця тощо).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.