dircolors: modifica le impostazioni del colore a livello globale


40

Capisco lsusi dircolorsper visualizzare output a colori. dircolorsha un database predefinito di colori associato alle estensioni di file, che può essere stampato con il comando

dircolors --print-database

Da quanto man dir_colorsho letto, il database a livello di sistema dovrebbe trovarsi in /etc/DIR_COLORS. Ma questo file non esiste sul mio sistema (Debian). Come posso modificare le impostazioni di colore a livello di sistema per dircolors? Da dove prende il comando dircolors --print-databasele impostazioni, quando non esiste alcun file.

Sono consapevole che l'utente può avere un file specifico dell'utente ~/.dircolorscon le sue impostazioni, ma questo non è adatto a me, poiché devo modificare le impostazioni per tutti.

Una seconda domanda è se è possibile usare i colori a 8 bit per i dircolor. Il mio terminale è xterm-256color.

Risposte:


36

lsprende le impostazioni del colore dalla variabile d'ambiente LS_COLORS. dircolorsè semplicemente un modo conveniente per generare questa variabile d'ambiente. Per rendere effettiva questa variabile di ambiente a livello di sistema, inserirla nel file di avvio della shell.

Per bash, lo inseriresti in /etc/profile:

# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

Per zsh, lo avresti messo o avresti /etc/zshrcprovveduto zsha leggere /etc/profileall'avvio. La tua distribuzione potrebbe averlo zshgià fatto. Ho appena sollevato questo per sottolineare che l'impostazione dircolorsper davvero tutti dipende dalla shell che usano.

Per quanto riguarda da dove dircolorsottiene le sue impostazioni, quando non si specifica un file utilizza solo alcune impostazioni predefinite integrate.

Puoi usare xtermi 256 codici di escape colore nel tuo file dircolors, ma tieni presente che funzioneranno solo xtermcon terminali compatibili. Non funzioneranno sulla console di testo Linux, ad esempio.

Il formato per 256 codici di escape colore è 38;5;colorNper i colori di primo piano e 48;5;colorNper i colori di sfondo. Quindi per esempio:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!

1
potresti spiegare come posso usare i codici di escape a 256 colori? Diciamo che voglio cambiare quanto segue .mp3 00;36per usare color126 dalla tabella dei colori xterm-256 upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963

1
Certo, vedi la mia modifica.
Matt,

8

Da dove prende il comando dircolors --print-databasele impostazioni, quando non esiste alcun file.

Come da manuale , utilizza un database precompilato in assenza di un file.

Se viene specificato il file, dircolors lo legge per determinare quali colori utilizzare per quali tipi di file ed estensioni. Altrimenti, viene utilizzato un database precompilato. Per i dettagli sul formato di questi file, eseguire ' dircolors --print-database'.

Per modificare le impostazioni per tutti, è possibile creare un /etc/dircolorsfile e aggiungere quanto segue a /etc/bashrc:

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"

7

Linux imposta i colori di sfondo della console con dircolors:

Il tuo file dircolors controlla i colori delle parole che appaiono attraverso ls sulla console. Trova questo .dircolorsfile per la tua distribuzione, un link per aiutare:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

Per me su Fedora 17, il mio file dircolors è: /etc/DIR_COLORS

Copia /etc/DIR_COLORSnella tua /home/el/.dircolorsdirectory. Crealo se non esiste.

Modifica /home/el/.dircolors, cerca il testo "dir".

Cambia questo:

DIR 01;34   # directory

A questa:

DIR 01;36   # directory

Salvare, chiudere e riavviare la shell. Le directory vanno dal blu scuro al nero (illeggibile) al verde acqua brillante al nero (leggibile).


2
-1: no /etc/DIR_COLORSnella distribuzione di OP, Debian. E lo sa già ~/.dircolors, non era questa la domanda
MestreLion,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.