drukowanie kolorowego tekstu za pomocą echa


25

Wiem, że do drukowania kolorowego tekstu za pomocą echa, na przykład koloru czerwonego, kod to: echo -e "\e[1;31m This is red text \e[0m"
i wiem, że w tym przykładzie 31 to kod koloru czerwonego, a liczba innych kolorów to:

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

a dla kolorów tła liczba wynosi od 40 do 47

Moje pytanie brzmi: co to \ei [i m(po 31) dokładnie na myśli?
Przeczytałem na stronie podręcznika, że ​​to ucieczka, ale nie rozumiem, co to znaczy.


Ogólnie rzecz biorąc, uciekasz przed postaciami, które mają specjalne znaczenie w bieżącym kontekście technicznym. Na przykład ciągi są często zapisywane w cudzysłowie „jak ten”. Ale jeśli chcesz cudzysłowu w ciągu, musisz uciec od tych znaków, aby były interpretowane dosłownie, a nie jako separatory. Na przykład echo "She said \"Hi\""w tym przypadku (twoje pytanie) musisz poczekać na lepszą odpowiedź.
Emanuel Berg

Odpowiedzi:


13

Są one częścią „elementów sekwencji” sekwencji ucieczkowych ANSI znanych również jako sekwencje CSMA ECMA-48 , które zostały pierwotnie przyjęte w 1976 r.

W szczególności [jest to „ wprowadzający sekwencję kontrolną

Wpisz man console_codesprawie dowolną dystrybucję * nix, aby zobaczyć kody i niektóre dokumenty.


man 4 console_codenie man console_code: W moim ubuntu
0x6773

Nazwa strony podręcznika kończy się na „s”, więc „man console_codes” powinien wywołać poprawną stronę.
Mikko Rantalainen

4

Aby być precyzyjnym, kody kolorów są zdefiniowane jak poniżej-

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

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

Zasadniczo jest to po prostu sposób, w jaki różne terminale interpretują kody kolorów i podpisujesz tekst w tych elementach. To dziwny sposób, aby terminal zrozumiał, co masz na myśli (np. HexCodes lub Binary ..)


2

Znalazłem ładne wyjaśnienie tutaj (przynajmniej dla mnie, ładny :-) ). Nie jestem pewien, czy ci się przyda.

Aby rozpocząć, wpisz to na konsoli:

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

Pierwszy znak jest znakiem ucieczki, który wygląda jak dwa znaki ^ i [. Aby móc to wydrukować, musisz nacisnąć CTRL + V, a następnie klawisz ESC. Wszystkie pozostałe znaki są normalnymi znakami do wydrukowania, więc napis W kolorze jest czerwony. Typ pozostaje w tym kolorze, dopóki nie wrócisz, pisząc to:

Są to kody ucieczki do ustawiania trybów kolorów w terminalu. Po prostu drukowane zwykłymi znakami wyglądają tak.


2

\ejest skrótem dla postaci Escape. <ESC>[i msą znaczniki na początku i na końcu ANSI sekwencje sterujące, które są podzbiorem ANSI sterowania zaciskami sekwencjonowano. Większość z nich zaczyna się od <ESC>[, po którym następuje liczba, po której następuje litera wskazująca, która funkcja jest realizowana (np. Przesunięcie kursora do linii; wyczyść do końca linii, powrót kursora do zapisanej lokalizacji itp.).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.