it-swarm-eu.dev

tisk barevného textu pomocí echo

Vím, že pro tisk barevného textu pomocí echo, například červené barvy, je kód: echo -e "\e[1;31m This is red text \e[0m"
a vím, že v tomto příkladu je 31 kód červené barvy a počet dalších barev je:

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 pro barvy pozadí je počet 40 až 47

moje otázka zní: co dělá \e a [ a m (po 31) zde přesně znamenají?
Na manuálové stránce jsem četl, že je únik, ale nechápal jsem, co to znamená.

25
M0εiπ

Jsou součástí „sekvenčních prvků“ únikové sekvence ANSI také známé jako ECMA-48 CSI sekvence, které byly původně přijaty v roce 1976

Konkrétněji [ je ' Zavaděč řídicí sekvence '

Zadejte man console_codes téměř v každém * nix distro vidět kódy a některé dokumenty.

13

Přesné barevné kódy jsou definovány níže

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

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

Takže v zásadě je to jen způsob, jakým různé terminály interpretují barevné kódy, a do těchto prvků vkládáte text. Je to zvláštní způsob, jak terminálu porozumět tomu, co máte na mysli (jako HexCodes nebo Binary ..)

4
AnBisw

\e je zkratka pro znak Escape. <ESC>[ a m jsou markery pro začátek a konec sekvencí řízení barev ANSI, které jsou podmnožinou sekvenčního řízení terminálů ANSI. Většina z nich začíná <ESC>[, následované číslem, následovaným písmenem označujícím, která funkce je implementována (např. přesuňte kurzor na řádek; jasný až na konec řádku, vraťte kurzor na uložené místo, atd.).

2
DopeGhoti

Našel jsem Nice vysvětlení zde (alespoň, Nice pro mě : -) ). Nejsem si jistý, jestli to pro vás bude užitečné.

Chcete-li začít, zadejte toto na konzoli:

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

První znak je únikový znak, který vypadá jako dva znaky ^ a [. Chcete-li to vytisknout, musíte stisknout klávesy CTRL + V a poté klávesu ESC. Všechny ostatní znaky jsou normální tisknutelné znaky, takže řetězec In Color je zobrazen červeně. Typ zůstane touto barvou, dokud se nevrátíte zpět zadáním tohoto:

Jsou to únikové kódy pro nastavení barevných režimů v terminálu. Je to tak, že když jsou vytištěny běžnými znaky, vypadají takto.

2
BorrajaX