risposta-alla-domanda-sullo-sviluppo-web-bd.com

dircolors: modifica le impostazioni del colore a livello globale

Capisco che ls usa dircolors per visualizzare l'output colorato. dircolors ha un database predefinito di colori associato alle estensioni di file, che può essere stampato con il comando

dircolors --print-database

A partire dal man dir_colors Ho 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 viene il comando dircolors --print-database prende le impostazioni da, quando non esiste alcun file.

Sono consapevole che l'utente può avere un file specifico dell'utente ~/.dircolors con 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.

43
user1968963

ls prende le impostazioni del colore dalla variabile d'ambiente LS_COLORS. dircolors è semplicemente un modo conveniente per generare questa variabile d'ambiente. Affinché questa variabile di ambiente abbia effetto a livello di sistema, inserirla nel file di avvio di 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 inseriresti in /etc/zshrc o fai in modo che zsh legga /etc/profile all'avvio. La tua distribuzione potrebbe già avere zsh. Ho appena sollevato questo per sottolineare che l'impostazione dircolors per davvero tutti dipende dalla Shell che usano.

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

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

Il formato per 256 codici colore escape è 38;5;colorN per i colori di primo piano e 48;5;colorN per 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!
40
Matt

Da dove viene il comando dircolors --print-database prende le impostazioni da, 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, esegui "dircolors --print-database’.

Per modificare le impostazioni per tutti, puoi creare un /etc/dircolors file e aggiungi quanto segue a /etc/bashrc:

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

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 .dircolors file 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_COLORS nel tuo /home/el/.dircolors directory. Crealo se non esiste.

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

Cambia questo:

DIR 01;34   # directory

A questo:

DIR 01;36   # directory

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

8
Eric Leschinski