Metodi di pagamento Abuse

Colori del terminale Linux

26.09.2021, 22:47

Il vantaggio di Linux è che si può personalizzare qualsiasi cosa, se lo si desidera. Questo è il vantaggio dei sistemi proiettivi rispetto a quelli procedurali. Si tratta di una sorta di costruttore composto da singoli blocchi, ognuno dei quali può essere personalizzato a piacere.

È particolarmente interessante se non ci si limita a copiare soluzioni già pronte, ma si cerca di capire cosa e come funziona. E anche quando si risolve un compito frivolo, si impara qualcosa di nuovo.

Colorare i colori dell'output

Ad esempio, si desidera regolare i colori del terminale linux nell'output del comando ls.

Dalla documentazione di ls si può capire che l'impostazione dei colori per l'output viene fatta usando l'utilità dircolors, che imposta i parametri dei colori dal proprio database o li prende dal file ~/.dircolors. È stato anche detto che l'inizializzazione dell'uso dei colori avviene tramite ~/.bashrc, il file delle impostazioni della shell, e che i parametri stessi sono definiti tramite la variabile LC_COLORS.

In .bashrc è stato trovato il seguente script:

La sua essenza consiste nel verificare la presenza dell'utilità dircolors sul sistema, assegnare un valore alla variabile e, in caso di successo, utilizzare il parametro --color=auto ogni volta che viene richiamato ls.

Se si esegue l'utilità dircolors, viene emesso il valore della variabile LC_COLOR.

È anche possibile visualizzare il valore della variabile LC_COLORS in forma strutturata, specificando la chiave:

$ dircolors -p

Poiché l'output è lungo, non lo riporto qui.

Se si reindirizza l'output dircolors -p > ~/.dircolors, verrà creato un file strutturato da cui verranno prese le impostazioni dei colori. Modificando questo file, si possono impostare i colori per l'output di ls.

Nel file .dircolors creato è presente un suggerimento:

Impostando la sequenza attraverso il punto e virgola si ottiene il colore desiderato nella console linux, in base a quanto elencato. I colori del terminale linux vanno da 30 a 37 per il colore dei caratteri e da 40 a 47 per lo sfondo. Ad esempio:

DIR 01;34 implica che i nomi delle directory saranno in grassetto e in blu.

In questo modo, però, si ottengono solo otto colori, mentre i moderni emulatori di terminale sono in grado di visualizzarne almeno 256.

Esistono altri modi per impostare il colore. Per esempio, EXEC 38;5;208;1 dà un carattere arancione spesso per i file eseguibili.

Per non dover passare manualmente i colori di linux, esiste una tabella di colori già pronta per l'uso

Sostituendo il valore del colore 38;5;x - dove x è il colore della tabella, si ottiene il risultato necessario. Si ottiene qualcosa di simile:

Come funziona? Il punto è che l'impostazione del colore delle informazioni emesse nell'emulatore di terminale avviene con l'aiuto dei codici di escape ANSI. Si tratta di una determinata sequenza di caratteri che non viene stampata sullo schermo, ma influisce sull'output. Si chiama così perché inizia con il codice [ - "Esc". Poiché esistono molti terminali ed emulatori di terminale, questi codici di controllo sono standardizzati. Il controllo dei colori attraverso la sequenza da 30 a 37 è lo standard ECMA-48. Le informazioni al riguardo si trovano nella sezione codici_console.

Colorare la riga di invito

Una volta compreso come impostare i colori di linux tramite i codici esc, è facile ridisegnare e colorare il prompt. La variabile PS1, definita nel file ~/.bashrc, è responsabile del suo output

In Linux Mint, lo script per inizializzarla si presenta così:

Cioè, viene prima determinato se lo script è stato eseguito da root o da un utente normale. Poiché nella maggior parte dei casi si tratta della seconda opzione, la riga successiva al primo "else" deve essere modificata. Il formato della riga è decifrato nella documentazione di bash, nella sezione "Promting". Implica che la sequenza esc deve iniziare con "[" e terminare con "]". Quindi:

  • [[01;32m] - imposta il colore verde;
  • u - visualizza il nome dell'utente;
  • h - visualizza il nome dell'host;
  • [[00m] - cancella gli attributi impostati;
  • [[01;34m] - imposta il colore blu;
  • w - visualizza il nome della directory di lavoro;
  • Ciao - un esempio di come possa essere emesso qualsiasi testo derivato.

Cos'altro può essere emesso nel prompt:

  • d - la data, nel formato "mer 28 dic";
  • A - l'ora, nel formato 24 ore;
  • ! - numero del comando corrente nella cronologia;
  • - trasferimento dell'output su un'altra riga;

Introduciamo qualcosa di più interessante:

PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '

E la riga di prompt avrà l'aspetto di: