stampa di testo colorato tramite eco


25

So che per stampare un testo colorato usando l'eco, 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 di colore rosso e il numero di 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: che cosa significa \ee [e m(dopo il 31) significa esattamente qui?
Ho letto nella pagina man che \ e è escape, ma non ho capito cosa significhi.


In generale, sfuggi a personaggi che hanno significati speciali nel contesto tecnico attuale. Ad esempio, le stringhe sono spesso scritte tra virgolette, "in questo modo". Ma se vuoi le virgolette all'interno di una stringa, devi evitare quei caratteri in modo che vengano interpretati letteralmente e non come delimitatori. Ad esempio, echo "She said \"Hi\""per quanto riguarda questo caso (la tua domanda), dovrai aspettare una risposta migliore.
Emanuel Berg,

Risposte:


13

Fanno parte degli "elementi di sequenza" delle sequenze di escape ANSI note anche come sequenze CSI ECMA-48 che sono state originariamente adottate nel 1976

Più in particolare, [è l ' "introduttore di sequenza di controllo "

Digita man console_codesquasi ogni * nix distro per vedere i codici e alcuni documenti.


man 4 console_codenot man console_code: Nel mio ubuntu
0x6773,

Il nome della pagina del manuale termina con una "s", quindi "man console_codes" dovrebbe far apparire la pagina corretta.
Mikko Rantalainen,

4

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 di colore e si sottotitola il testo all'interno di questi elementi. È un modo strano per far capire al terminale cosa intendi (come HexCodes o Binary ..)


2

Ho trovato una 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 personaggio è un personaggio di escape, che assomiglia a due personaggi, ^ e [. Per poterlo stampare, è necessario premere CTRL + V e quindi il tasto ESC. Tutti gli altri caratteri sono normali caratteri stampabili, quindi vedrai la stringa In colore in rosso. Il tipo rimane quel colore fino a quando non si torna indietro digitando questo:

Sono codici di escape per impostare le modalità colore nel terminale. È solo che se stampato con caratteri normali, sembrano così.


2

\eè una scorciatoia per il personaggio Escape. the <ESC>[e the msono i marcatori per l'inizio e la fine delle sequenze di controllo del colore ANSI, che sono un sottoinsieme del controllo del terminale ANSI in sequenza. La maggior parte di essi inizia con <ESC>[, seguito da un numero, seguito da una lettera che indica quale funzione viene implementata (ad es. Sposta il cursore su una riga; cancella fino alla fine della riga, riporta il cursore sulla posizione salvata, eccetera).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.