Come modificare i colori di directory e file nel comando ls

Pubblicato: 2022-01-29

Se hai eseguito il comando ls in Bash, noterai che le directory e i file che vedi sono colorati in base al loro tipo. Puoi personalizzare la tua combinazione di colori per scegliere diversi colori di testo, colori di sfondo e formattazione come grassetto e sottolineato.

Come funziona

La combinazione di colori è memorizzata nella variabile LS_COLORS. Per visualizzare la tua combinazione di colori attuale, puoi dire a Bash di stampare il contenuto della variabile:

 eco $LS_COLORS

Vedrai un lungo elenco di tipi di file e codici numerici. Ti spiegheremo come creare tu stesso un elenco come questo.

Prima di giocare con questo, consigliamo di salvare il contenuto corrente della variabile LS_COLORS in un'altra variabile. Ciò ti consentirà di ripristinare rapidamente le impostazioni predefinite senza uscire dalla shell e accedere nuovamente o chiudere e riaprire la finestra del terminale. Per salvare il contenuto corrente della variabile LS_COLORS in una nuova variabile denominata ORIGINAL, eseguire:

 ORIGINALE=$LS_COLORI 

In qualsiasi momento, puoi eseguire il seguente comando per annullare le modifiche e ripristinare i colori predefiniti:

 LS_COLORS=$ORIGINALE
Annuncio pubblicitario

Le tue modifiche sono sempre temporanee finché non modifichi un file per impostarle come nuove impostazioni predefinite. Puoi sempre disconnetterti e riconnetterti o chiudere e riaprire una finestra del terminale per ripristinare i colori alle impostazioni predefinite. Tuttavia, questo lo rende facile con un singolo comando rapido.

Come impostare i colori personalizzati

La variabile LS_COLORS contiene un elenco di tipi di file insieme ai codici colore associati. L'elenco predefinito è lungo perché specifica colori diversi per diversi tipi di file.

Iniziamo un esempio di base per dimostrare come funziona. Diciamo che vogliamo cambiare il colore delle directory dal blu grassetto predefinito al rosso grassetto. Possiamo eseguire il seguente comando per farlo:

 LS_COLORS="di=1;31"

Il bit di=1;31 dice a ls che le directory ( di ) sono ( = ) grassetto ( 1; ) rosso ( 31 ).

Tuttavia, questa è solo una variabile LS_COLORS molto semplice che definisce le directory come un colore e lascia ogni altro tipo di file come colore predefinito. Diciamo che vogliamo anche rendere i file con estensione .desktop un colore ciano sottolineato. Possiamo eseguire il seguente comando per farlo:

 LS_COLORS="di=1:31:*.desktop=4;36"
Annuncio pubblicitario

Questo dice a ls che le directory ( di ) sono ( = ) grassetto ( 1; ) rosso ( 31 ) e ( : ) qualsiasi file che termina con .desktop ( *.desktop ) è ( = ) sottolineato ( 4; ) cyan ( 36 ).

Questo è il processo per assemblare l'elenco di tipi di file e colori. Specifica quanti ne vuoi nella forma filetype=color, separandoli ciascuno con un carattere due punti (:).

CORRELATI: Come personalizzare (e colorare) il tuo prompt Bash

Per assemblare la tua lista, devi solo conoscere la lista dei codici colore e dei tipi di file. Questo utilizza gli stessi codici colore numerici che usi quando cambi il colore nel tuo prompt di Bash.

Ecco l'elenco dei codici colore per il testo in primo piano:

  • Nero: 30
  • Blu: 34
  • Ciano: 36
  • Verde: 32
  • Viola: 35
  • Rosso: 31
  • Bianco: 37
  • Giallo: 33

Ad esempio, poiché il testo giallo è il codice colore 33, dovresti usare di=33 per rendere gialle le directory.

Ecco l'elenco degli attributi del colore del testo:

  • Testo normale: 0
  • Testo in grassetto o chiaro: 1 (dipende dall'emulatore di terminale.)
  • Testo debole: 2
  • Testo sottolineato: 4
  • Testo lampeggiante: 5 (questo non funziona nella maggior parte degli emulatori di terminale.)
  • Testo invertito: 7 (questo inverte i colori di primo piano e di sfondo, quindi vedrai il testo nero su sfondo bianco se il testo corrente è bianco su sfondo nero.)
  • Testo nascosto: 8

Quando si specifica un attributo o più di un codice colore, separare l'elenco dei codici con un punto e virgola (;). Non è necessario specificare 0 per il testo normale, poiché il testo normale viene utilizzato quando non si specifica un attributo qui.

Ad esempio, poiché il testo in grassetto è il codice colore 1 e il testo giallo è il codice colore 33, dovresti usare di=1;33 per rendere le directory gialle in grassetto. Puoi anche specificare più di un attributo. Ad esempio, puoi usare di=1;4;33 per rendere le directory in grassetto, sottolineate in giallo.

Ecco l'elenco dei codici colore di sfondo:

  • Sfondo nero: 40
  • Sfondo blu: 44
  • Sfondo ciano: 46
  • Sfondo verde: 42
  • Sfondo viola: 45
  • Sfondo rosso: 41
  • Sfondo bianco: 47
  • Sfondo giallo: 43

Ad esempio, poiché uno sfondo blu è il codice colore 44, dovresti utilizzare di=44 per utilizzare uno sfondo blu per le directory. Puoi anche combinare un codice colore di sfondo, un codice colore di primo piano e tutti gli attributi che desideri. Ad esempio, di=1;4;33;44 ti darebbe un testo giallo in grassetto e sottolineato su sfondo blu.

Ecco l'elenco dei codici dei tipi di file:

  • Repertorio: di
  • Dossier: fi
  • Legame simbolico: ln
  • Pipa denominata (FIFO): pi
  • Presa: così
  • Dispositivo di blocco: bd
  • Dispositivo caratteri: cd
  • Collegamento simbolico orfano (punta a un file che non esiste più): o
  • Missing File (un file mancante a cui punta un collegamento simbolico orfano): mi
  • File eseguibile (ha l'autorizzazione "x"): es
  • *.extension: qualsiasi file che termina con un'estensione specificata. Ad esempio, usa *.txt per i file che terminano con .txt, *.mp3 per i file che terminano con .mp3, *.desktop per i file che terminano con .desktop o qualsiasi altra cosa che ti piace. Puoi specificare tutte le estensioni di file che desideri.
Annuncio pubblicitario

Specifica tutti i tipi diversi di codici del tipo di file con tutti i colori che desideri, separati dal carattere :. Ripeti questo processo per assemblare la tua variabile LS_COLORS.

Ad esempio, supponiamo di voler utilizzare testo viola in grassetto per le directory, testo rosso sottolineato per file eseguibili e testo verde grassetto su sfondo rosso per file .mp3. Mettendo insieme i codici del tipo di file e i codici colore dagli elenchi sopra, otterrai:

 LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41" 

Come impostare i nuovi colori predefiniti

Ora hai una variabile LS_COLORS personalizzata che funziona nella sessione Bash corrente. Tuttavia, probabilmente vorrai renderlo permanente in modo che venga utilizzato automaticamente ogni volta che avvii una nuova sessione Bash senza che tu debba ricordarlo.

Puoi impostare la tua variabile LS_COLORS personalizzata e qualsiasi altra variabile Bash che ti piace aggiungendola al file .bashrc del tuo account utente. Questo file si trova in ~/.bashrc. Quindi, se il tuo nome utente è bob, lo troverai in /home/bob/.bashrc. Esistono anche altri modi per impostare le variabili di ambiente, ma questo è semplice.

Innanzitutto, apri questo file nel tuo editor di testo preferito. Useremo nano qui come esempio, ma puoi usare vi, emacs o qualsiasi altra cosa tu voglia.

 nano ~/.bashrc 

Aggiungi la tua variabile LS_COLORS personalizzata a una nuova riga alla fine del file, in questo modo:

 LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
Annuncio pubblicitario

Salva il file ed esci. In nano, premi Ctrl+O, quindi premi Invio per salvare, quindi premi Ctrl+X per uscire.

Ogni volta che avvii una nuova sessione Bash, Bash leggerà il file .bashrc e imposterà automaticamente la tua variabile LS_COLORS. Per cambiare i tuoi colori in futuro, torna al tuo file .bashrc e modifica la riga LS_COLORS.

Puoi anche eliminare semplicemente la riga LS_COLORS= che hai aggiunto al tuo file .bashrc per utilizzare nuovamente i colori predefiniti. Se non imposti il ​​valore LS_COLORS, Bash utilizzerà i colori predefiniti.