Introduzione
I echo
il comando restituisce una determinata stringa a tubo di uscita standard, che in genere punta al terminale. Sebbene il tubo di uscita standard possa puntare ad altre interfacce, il echo
Il comando viene in genere utilizzato per stampare e visualizzare i messaggi nel terminale. Per impostazione predefinita, il testo del messaggio visualizzato eredita il colore dell'altro testo nel terminale (che è personalizzabile in sé e per sé). Tuttavia, ci sono diversi modi per modificare il colore di output echo
– sia per singole stringhe che per interi messaggi.
In questa breve guida, daremo un'occhiata a come modificare il colore di output di
echo
nei sistemi basati su Linux, utilizzando codici di escape ANSI,tput
e come puoi rendere questo processo meno dettagliato negli script Bash.
Modifica il colore di output con i codici di escape ANSI
Il modo più semplice per cambiare il colore è tramite sequenze/codici di escape ANSI. Tutti i codici di escape ANSI iniziano con il Escape
carattere, che può essere rappresentato in vari formati – 27
in decimale, x1B
in esadecimale, come tasto di controllo ^[
, o 33
in formato ottale. Le sequenze sono quindi seguite dal comando:
33[command
Dove la parentesi di apertura (Introduzione alla sequenza di controllo) è facoltativo, ma aiuta a separare il comando dal carattere di escape. Quando metti un codice colore come comando, cambia il colore del testo in arrivo:
33[0;34
0;34
è il codice per il colore blu, per esempio. Con questo solo, puoi cambiare il colore del testo in echo
con:
33[0;34Text
Dove Text
sarebbe colorato di blu. In alternativa, considera un semplice script bash da stampare "Benvenuti in Francia" nei colori della bandiera francese:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Facoltativo -e
bandiera del echo
comando consente di utilizzare caratteri speciali come n
(nuova riga) e t
(tab) all'interno della stringa di input.
Una volta eseguito lo script:
$ ./colors.sh
Risulta in:
I codici ANSI non si limitano al colore, ma possono essere applicati anche per lo stile. I codici 0..9
rappresentano gli stili di testo, mentre i codici 30...37
rappresentare i colori:
Colore | Codici | Stili di testo | Codici |
Nero | 30 | Testo semplice | 0 |
Rosso | 31 | Testo in grassetto | 1 |
Green | 32 | Testo a bassa intensità | 2 |
Marrone / Arancio | 33 | Testo sottolineato | 4 |
Blu | 34 | Testo lampeggiante | 5 |
Viola | 35 | Testo invisibile | 8 |
Ciano | 36 | Testo barrato | 9 |
Grigio Chiaro | 37 |
Creiamo uno script bash per esplorare alcune di queste opzioni:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
L'esecuzione di questo script comporta:
Dai un'occhiata alla nostra guida pratica e pratica per l'apprendimento di Git, con le migliori pratiche, gli standard accettati dal settore e il cheat sheet incluso. Smetti di cercare su Google i comandi Git e in realtà imparare esso!
Allo stesso modo, puoi cambiare il colore di sfondo di questi testi usando i codici 40..47
:
colore | Codici |
Nero | 40 |
Rosso | 41 |
Green | 42 |
Marrone / Arancio | 43 |
Blu | 44 |
Viola | 45 |
Ciano | 46 |
Grigio Chiaro | 47 |
La modifica dello sfondo di una determinata stringa si riduce alla stessa regola di quando si cambia il colore del carattere: il codice stesso cambia il comportamento:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Nota: Come regola generale, puoi tradurre i colori dei caratteri in colori di sfondo aggiungendo 10. 30
è il colore del carattere nero, 40
è il colore di sfondo nero.
Cambia il colore di output con il tput
Un'alternativa ai codici ANSI sta usando il tput
comando:
$ tput setaf color_code
setf
consente 8 colori, mentre setaf
consente 256 colori, quindi a seconda del comando che stai utilizzando, puoi scegliere tra 0..7
ed 0..255
come i codici colore. Entrambi comandi dedicare 0..7
agli stessi codici colore, mentre con setaf
, 8..15
sono colori ad alta intensità e 16..231
sono tonalità diverse delle prime 8, e 232..255
sono i colori in scala di grigi:
Crediti: wikipedia
Infine, tput
permette inoltre di cambiare il colore di sfondo, aggiungere grassetto, abbassare l'intensità, ecc. con altri comandi:
Stili di testo | Comandi |
Colore di primo piano | setaf |
Colore di sfondo | setab |
Nessuno stile | sgv0 |
Testo in grassetto | perno |
Testo a bassa intensità | dim |
Testo sottolineato | smul |
Testo lampeggiante | lampeggiare |
Testo inverso | rev |
Creiamo un altro script che utilizza tput
per cambiare il colore di output echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Questo script stamperà il seguente output nel terminale:
Il comando tput offre un modo semplice per stampare qualsiasi colore attraverso un semplice codice colore. Creiamo ora uno script in grado di stampare ogni codice colore disponibile per il comando tput:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Stamperà da 0 a 255 colori e i relativi codici:
Conclusione
In questa breve guida, abbiamo dato un'occhiata a come puoi cambiare il colore di echo
's in Linux – usando ANSI Escape Sequences e il tput
comando.
Abbiamo anche esplorato come rendere il processo meno dettagliato usando le variabili Bash, modificare i colori di sfondo e lo stile del testo.