Puoi aggiungere colore al tuo terminale Linux usando speciali impostazioni di codifica ANSI, dinamicamente in un comando del terminale o nei file di configurazione, oppure puoi usare temi già pronti nel tuo emulatore di terminale. Ad ogni modo, il testo nostalgico verde o ambra su uno schermo nero è del tutto opzionale. Questo articolo mostra come puoi rendere Linux colorato (o monocromatico) come desideri.
Capacità del terminale
I sistemi moderni di solito hanno per impostazione predefinita almeno xterm-256color, ma se provi ad aggiungere colore al tuo terminale senza successo, dovresti controllare l'impostazione TERM.
Storicamente, i terminali Unix erano letteralmente questo:punti fisici all'endpoint letterale (terminazione) di un sistema informatico condiviso in cui gli utenti potevano digitare i comandi. Erano unici rispetto alle macchine di telescrivente (motivo per cui abbiamo ancora dispositivi /dev/tty in Linux oggi) che venivano spesso utilizzate per emettere comandi in remoto. I terminali avevano monitor CRT integrati, in modo che gli utenti potessero sedersi a un terminale nel loro ufficio per interagire direttamente con il mainframe. I monitor CRT erano costosi, sia da produrre che da controllare; era più facile far sputare un testo ASCII grezzo da un computer piuttosto che preoccuparsi dell'anti-aliasing e di altre sottigliezze che gli informatici moderni danno per scontate. Tuttavia, anche allora gli sviluppi tecnologici sono avvenuti rapidamente ed è diventato subito evidente che, quando sono stati progettati nuovi terminali di visualizzazione video, avevano bisogno di nuove funzionalità per essere disponibili su base opzionale.
Ad esempio, il nuovo stravagante VT100 rilasciato nel 1978 supportava il colore ANSI, quindi se un utente identificava il tipo di terminale come vt100, un computer potrebbe fornire un output a colori, mentre un dispositivo seriale di base potrebbe non avere tale opzione. Lo stesso principio si applica oggi ed è impostato dalla variabile d'ambiente TERM. Puoi controllare la tua definizione TERM con echo :
$ echo $TERM
xterm-256color
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Il file obsoleto (ma ancora mantenuto su alcuni sistemi nell'interesse della compatibilità con le versioni precedenti) /etc/termcap definiva le capacità di terminali e stampanti. La versione moderna è terminfo, che si trova in /etc o /usr/share, a seconda della tua distribuzione. Questi file elencano le funzionalità disponibili in diversi tipi di terminali, molti dei quali sono definiti dall'hardware storico:ci sono definizioni per vt100 fino a vt220, così come per moderni emulatori software come xterm e Xfce. La maggior parte dei software non si preoccupa del tipo di terminale che stai utilizzando; in rari casi, potresti ricevere un avviso o un errore su un tipo di terminale errato quando accedi a un server che verifica la presenza di funzionalità compatibili. Se il tuo terminale è impostato su un profilo con pochissime funzionalità, ma sai che l'emulatore che usi ne ha di più, puoi modificare le tue impostazioni definendo la variabile d'ambiente TERM. Puoi farlo esportando la variabile TERM nel tuo file di configurazione ~/.bashrc:
export TERM=xterm-256color
Salva il file e ricarica le impostazioni:
$ source ~/.bashrc
Codici colore ANSI
I terminali moderni hanno ereditato le sequenze di escape ANSI per le funzionalità "meta". Si tratta di sequenze speciali di caratteri che un terminale interpreta come azioni anziché come caratteri. Ad esempio, questa sequenza cancella lo schermo fino al prompt successivo:
$ printf `\033[2J`
Non cancella la tua cronologia; schiarisce semplicemente lo schermo nell'emulatore di terminale, quindi è una sequenza di escape ANSI sicura e dimostrativa.
ANSI ha anche sequenze per impostare il colore del tuo terminale. Ad esempio, digitando questo codice il testo successivo diventa verde:
$ printf '\033[32m'
Finché vedi il colore allo stesso modo del tuo computer, puoi utilizzare il colore per aiutarti a ricordare a quale sistema hai effettuato l'accesso. Ad esempio, se esegui regolarmente SSH nel tuo server, puoi impostare il prompt del server su verde per differenziarlo a colpo d'occhio dal prompt locale. Per un prompt verde, usa il codice ANSI per il verde prima del carattere del prompt e terminalo con il codice che rappresenta il tuo normale colore predefinito:
export PS1=`printf "\033[32m$ \033[39m"`
Primo piano e sfondo
Non sei limitato a impostare il colore del tuo testo. Con i codici ANSI, puoi controllare il colore di sfondo del tuo testo e creare uno stile rudimentale.
Ad esempio, con \033[4 milioni , puoi far sottolineare il testo o con \033[5m puoi impostarlo per lampeggiare. All'inizio potrebbe sembrare sciocco, perché probabilmente non imposterai il tuo terminale per sottolineare tutto il testo e lampeggiare tutto il giorno, ma può essere utile per determinate funzioni. Ad esempio, potresti impostare un errore urgente prodotto da uno script di shell in modo che lampeggi (come avviso per il tuo utente), oppure potresti sottolineare un URL.
Per riferimento, ecco i codici colore di primo piano e di sfondo. I colori di primo piano sono nell'intervallo 30, mentre i colori di sfondo sono nell'intervallo 40:
Colore | In primo piano | Sfondo |
---|---|---|
Nero | \033[30 milioni | \033[40 milioni |
Rosso | \033[31 milioni | \033[41 milioni |
Verde | \033[32 milioni | \033[42 milioni |
Arancio | \033[33 milioni | \033[43 milioni |
Blu | \033[34 milioni | \033[44 milioni |
Magenta | \033[35 milioni | \033[45 milioni |
Ciano | \033[36 milioni | \033[46 milioni |
Grigio chiaro | \033[37 milioni | \033[47 milioni |
Ritorno all'impostazione predefinita della distribuzione | \033[39 milioni | \033[49 milioni |
Sono disponibili alcuni colori aggiuntivi per lo sfondo:
Colore | Sfondo |
---|---|
Grigio scuro | \033[100 milioni |
Rosso chiaro | \033[101 milioni |
Verde chiaro | \033[102 milioni |
Giallo | \033[103 milioni |
Azzurro | \033[104 milioni |
Viola chiaro | \033[105 milioni |
Alzavola | \033[106 milioni |
Bianco | \033[107 milioni |
Permanenza
L'impostazione dei colori nella sessione del terminale è solo temporanea e relativamente incondizionata. A volte l'effetto dura poche righe; questo perché questo metodo di impostazione dei colori si basa su un'istruzione printf per impostare una modalità che dura solo fino a quando qualcos'altro lo sovrascrive.
Il modo in cui un emulatore di terminale ottiene in genere istruzioni su quali colori utilizzare è dalle impostazioni della variabile d'ambiente LS_COLORS, che a sua volta è popolata dalle impostazioni di dircolors. Puoi visualizzare le tue impostazioni correnti con una dichiarazione eco:
$ echo $LS_COLORS
rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;
38;5;11:so=38;5;13:do=38;5;5:bd=48;5;
232;38;5;11:cd=48;5;232;38;5;3:or=48;
5;232;38;5;9:mi=01;05;37;41:su=48;5;
196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;
196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;
[...]
Oppure puoi usare direttamente dircolors:
$ dircolors --print-database
[...]
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
[...]
Se sembra criptico, è perché lo è. La prima cifra dopo un tipo di file è il codice attributo e ha sei opzioni:
- 00 nessuno
- 01 grassetto
- 04 sottolineatura
- 05 lampeggio
- 07 inverso
- 08 nascosto
La cifra successiva è il codice colore in forma semplificata. Puoi ottenere il codice colore prendendo l'ultima cifra del codice ANSII (32 per il primo piano verde, 42 per lo sfondo verde; 31 o 41 per il rosso e così via).
La tua distribuzione probabilmente imposta LS_COLORS a livello globale, quindi tutti gli utenti del tuo sistema ereditano gli stessi colori. Se vuoi un set di colori personalizzato, puoi usare dircolors per quello. Innanzitutto, genera una copia locale delle impostazioni del colore:
$ dircolors --print-database > ~/.dircolors
Modifica la tua lista locale come desideri. Quando sei soddisfatto delle tue scelte, salva il file. Le tue impostazioni di colore sono solo un database e non possono essere utilizzate direttamente da ls, ma puoi usare dircolors per ottenere lo shellcode che puoi usare per impostare LS_COLORS:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
[...]
export LS_COLORS
Copia e incolla l'output nel tuo file ~/.bashrc e ricaricalo. In alternativa, puoi scaricare quell'output direttamente nel tuo file .bashrc e ricaricarlo.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Puoi anche fare in modo che Bash risolva .dircolors all'avvio invece di eseguire la conversione manualmente. Realisticamente, probabilmente non cambierai spesso i colori, quindi questo potrebbe essere eccessivamente aggressivo, ma è un'opzione se prevedi di cambiare molto la tua combinazione di colori. Nel tuo file .bashrc, aggiungi questa regola:
[[ -e $HOME/.dircolors ]] && eval "`dircolors --sh $HOME/.dircolors`"
Se hai un file .dircolors nella tua home directory, Bash lo valuta all'avvio e imposta LS_COLORS di conseguenza.
Colore
I colori nel tuo terminale sono un modo semplice per darti un rapido riferimento visivo per informazioni specifiche. Tuttavia, potresti non voler appoggiarti troppo pesantemente su di loro. Dopotutto, i colori non sono universali, quindi se qualcun altro usa il tuo sistema, potrebbe non vedere i colori come te. Inoltre, se utilizzi una varietà di strumenti per interagire con i computer, potresti anche scoprire che alcuni terminali o connessioni remote non forniscono i colori che ti aspetti (o non forniscono affatto i colori).
A parte questi avvertimenti, i colori possono essere utili e divertenti in alcuni flussi di lavoro, quindi crea un database .dircolor e personalizzalo a tuo piacimento.