drukowanie kolorowego tekstu za pomocą echo

Wiem, że w przypadku drukowania kolorowego tekstu za pomocą echa, na przykład koloru czerwonego, kod jest następujący: 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 to od 40 do 47

moje pytanie brzmi: co robi \e i [ a m (po 31) dokładnie oznacza tutaj?
Czytałem na stronie podręcznika, że \ e to escape, ale nie rozumiałem, co to znaczy.

Komentarze

  • In ogólnie rzecz biorąc, zmienisz znaczenie znaków, które mają specjalne znaczenie w bieżącym kontekście technicznym. Na przykład ciągi są często zapisywane w cudzysłowie, " w ten sposób ". Ale jeśli chcesz, aby znaki cudzysłowu w ciągu znaków, musisz zmienić znaczenie tych znaków, aby były interpretowane dosłownie, a nie jako separatory. Na przykład echo "She said \"Hi\"" Tak jak w tym przypadku (Twoje pytanie ), ' będziesz musiał poczekać na lepszą odpowiedź.
  • hermannn.com/programs/terminal_fonts

Odpowiedź

Są częścią „Sekwencji elementów” sekwencje specjalne ANSI znane również jako ECMA-48 sekwencje CSI, które zostały pierwotnie przyjęte w 1976 roku

A dokładniej

to „ wprowadzający sekwencję kontrolną

Wpisz man console_codes w prawie każdej dystrybucji * nix, aby zobaczyć kody i niektóre dokumenty.

Komentarze

  • man 4 console_code nie man console_code: W moim ubuntu
  • Nazwa strony podręcznika kończy się na " s " so " man console_codes " powinno wywołać właściwą stronę.

Odpowiedź

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 sposób, w jaki różne terminale interpretują kody kolorów i podpisujesz swój tekst w tych elementach. To dziwny sposób, aby terminal zrozumiał, co masz na myśli (np. HexCodes lub Binary ..)

Odpowiedź

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

Aby rozpocząć, wpisz to w konsoli:

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

Pierwszy znak to znak zmiany znaczenia, 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 to normalne znaki drukowalne, więc ciąg w kolorze jest wyświetlany na czerwono. Typ pozostaje w tym kolorze, dopóki nie wrócisz, wpisując to:

Są to kody zmiany znaczenia do ustawiania trybów kolorów w terminalu. Czy tylko tak wyglądają po wydrukowaniu zwykłych znaków.

Odpowiedź

\e jest skrótem od znaku Escape. <ESC>[ i m to znaczniki początku i końca sekwencji sterowania kolorami ANSI, które są podzbiorem sekwencji sterowania terminalem ANSI . 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 zaimplementowana (np. Przesuń kursor do wiersza; wyczyść do końca wiersza, wróć kursor do zapisanej lokalizacja i tak dalej).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *