stampa di testo colorato utilizzando echo

So che per stampare un testo colorato utilizzando echo, ad esempio il colore rosso, il codice è: echo -e "\e[1;31m This is red text \e[0m"
e so che in questo esempio 31 è il codice del colore rosso e il numero degli altri colori è:

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 

e per i colori di sfondo, il numero è compreso tra 40 e 47

la mia domanda è questa: cosa fa \e e [ e m (dopo 31) significano esattamente qui?
Ho letto nella pagina man che \ e è escape, ma non ho capito cosa significa.

Commenti

  • In generale, esegui lescape di caratteri che hanno significati speciali nel contesto tecnico corrente. Ad esempio, le stringhe sono spesso scritte tra virgolette, " in questo modo ". Ma se desideri le virgolette allinterno di una stringa, devi eseguire lescape di quei caratteri in modo che vengano interpretati letteralmente e non come delimitatori. Ad esempio, echo "She said \"Hi\"" In questo caso (la tua domanda ), ' dovrai aspettare una risposta migliore.
  • hermannn.com/programs/terminal_fonts

Risposta

Fanno parte degli “Elementi sequenza” di sequenze di escape ANSI note anche come ECMA-48 sequenze CSI che furono originariamente adottate nel 1976

Più specificamente il

è “ Control Sequence Introducer

Digita man console_codes in quasi tutte le distro * nix per vedere i codici e alcuni documenti.

Commenti

  • man 4 console_code non man console_code: Nel mio ubuntu
  • Il nome della pagina di manuale termina con " s " so " man console_codes " dovrebbe far apparire la pagina corretta.

Risposta

Per essere precisi, i codici colore sono definiti come di seguito-

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

Quindi fondamentalmente è solo il modo in cui i diversi terminali interpretano i codici colore e tu inserisci la didascalia del testo allinterno di questi elementi. È un modo strano per far capire al terminale cosa intendi (come HexCodes o Binary ..)

Answer

Ho trovato un bella spiegazione qui (almeno, bella per me : -) ). Non sono sicuro che ti sarà utile.

Per iniziare, digita questo sulla tua console:

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

Il primo carattere è un carattere di escape, che assomiglia a due caratteri, ^ e [. Per poterlo stampare, devi premere CTRL + V e poi il tasto ESC. Tutti gli altri caratteri sono normali caratteri stampabili, quindi vedi la stringa In Color in rosso. Il tipo rimane di quel colore fino a quando non si torna indietro digitando questo:

Sono codici di escape per impostare le modalità di colore nel terminale. È solo che quando vengono stampati con caratteri regolari, hanno questo aspetto.

Risposta

\e è una scorciatoia per il carattere Escape. <ESC>[ e m sono gli indicatori per linizio e la fine delle sequenze di controllo del colore ANSI, che sono un sottoinsieme della sequenza di controllo del terminale ANSI . La maggior parte inizia con <ESC>[, seguito da un numero, seguito da una lettera che indica quale funzione è stata implementata (ad es. Sposta il cursore sulla riga; cancella fino alla fine della riga, riporta il cursore su salvata posizione, eccetera).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *