Homepage » come » Come cambiare i colori di directory e file nel comando ls

    Come cambiare i colori di directory e file nel comando ls

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

    Come funziona

    Lo schema dei colori è memorizzato nella variabile LS_COLORS. Per visualizzare la combinazione di colori corrente, puoi dire a Bash di stampare il contenuto della variabile:

    echo $ LS_COLORS

    Vedrai una lunga lista di tipi di file e codici numerici. Spiegheremo come creare da soli una lista come questa.

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

    ORIGINAL = $ LS_COLORS

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

    LS_COLORS = $ ORIGINALE

    Le modifiche sono sempre temporanee finché non si modifica un file per renderle le nuove impostazioni predefinite. Puoi sempre uscire e accedere o chiudere e riaprire una finestra di terminale per ripristinare i colori alle loro impostazioni predefinite. Tuttavia, questo rende facile farlo con un singolo comando rapido.

    Come impostare colori personalizzati

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

    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 di = 1; 31 un po 'dice ls quelle directory (di) siamo (=) grassetto (1;) rosso (31).

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

    LS_COLORS = "di = 1: 31:. * Desktop = 4; 36"

    Questo dice ls quelle directory (di) siamo (=) grassetto (1;) rosso (31) e (:) qualsiasi file che termina in .desktop (* .desktop) è (=) sottolineato (4;) ciano (36).

    Questo è il processo per assemblare la tua lista di tipi di file e colori. Specificare il numero desiderato nel formato filetype = color, separandoli con due punti (:).

    Per assemblare il tuo elenco, devi solo conoscere l'elenco di codici colore e codici tipo file. Questo utilizza gli stessi codici colore numerici che si usano quando si cambia il colore nel 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, dal momento che il testo giallo è il codice colore 33, lo useresti di = 33 per rendere le directory gialle.

    Ecco l'elenco degli attributi del colore del testo:

    • Testo normale: 0
    • Testo in grassetto o chiaro: 1 (dipende dall'emulatore di terminale).
    • Dim Text: 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 uno sfondo bianco se il testo corrente è testo bianco su sfondo nero.)
    • Testo nascosto: 8

    Quando si specifica un attributo o più di un codice colore, separare l'elenco di codici con un carattere 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, devi utilizzare di = 1; 33 per rendere le directory in grassetto giallo. Puoi anche specificare più di un attributo. Ad esempio, potresti usare di = 1; 4; 33 per rendere le directory in grassetto, sottolineato in giallo.

    Ecco l'elenco dei codici colore dello sfondo:

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

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

    Ecco l'elenco dei codici dei tipi di file:

    • Elenco: di
    • File: fi
    • Link simbolico: ln
    • Named Pipe (FIFO): pi
    • Presa: così
    • Dispositivo di blocco: bd
    • Dispositivo di carattere: cd
    • Link simbolico orfano (punta a un file che non esiste più): o
    • File mancante (un file mancante a cui punta un link simbolico orfano): mi
    • File eseguibile (ha il permesso "x"): es
    • *. estensione: qualsiasi file che termina con un'estensione specificata. Ad esempio, usa * .txt per i file che terminano in .txt, * .mp3 per i file che terminano in .mp3, * .desktop per i file che terminano in .desktop, o qualsiasi altra cosa tu voglia. Puoi specificare il numero di estensioni di file che desideri.

    Specifica tanti tipi diversi di codici di tipi 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 il testo in grassetto viola per le directory, il testo rosso sottolineato per i file eseguibili e il testo verde in grassetto su uno sfondo rosso per i file .mp3. Mettendo insieme i codici dei tipi di file e i codici colore dagli elenchi sopra, otterresti:

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

    Come impostare i nuovi colori di default

    Ora hai una variabile LS_COLORS personalizzata che funziona nella sessione Bash corrente. Tuttavia, probabilmente vuoi renderlo permanente in modo che venga utilizzato automaticamente ogni volta che avvii una nuova sessione di Bash senza doverti ricordare.

    Puoi impostare la 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 su /home/bob/.bashrc. Ci sono altri modi per impostare anche le variabili di ambiente, ma questo è semplice.

    Innanzitutto, apri questo file nel tuo editor di testo preferito. Qui utilizzeremo nano qui come esempio, ma puoi usare vi, emacs o qualsiasi altra cosa che ti piace.

    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"

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

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

    Puoi anche solo cancellare il LS_COLORS = linea aggiunta al file .bashrc per utilizzare nuovamente i colori predefiniti. Se non imposti il ​​valore LS_COLORS, Bash utilizzerà i colori predefiniti.