Come cambio il colore per le directory con ls nella console?

133

Sulla mia console il colore delle directory è così blu, che è difficile da leggere su uno sfondo scuro.

Come posso modificare le definizioni dei colori per ls ?

    
posta rubo77 15.05.2014 - 09:27

6 risposte

202

Per modificare i colori della directory, apri il file ~/.bashrc con l'editor

nano ~/.bashrc

e inserisci la seguente voce alla fine del file:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

Alcune belle scelte di colore (in questo caso 0;35 è viola) sono:

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

Il primo numero è lo stile (1 = grassetto), seguito da un punto e virgola, quindi il numero effettivo del colore, i possibili stili (effetti) sono:

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

Gli sfondi possibili:

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background
107 = white background

Tutti i colori possibili:

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

Possono anche essere combinati, così che un parametro come:

di=1;4;31;42

nella tua variabile LS_COLORS farebbe apparire le directory nel testo rosso sottolineato grassetto con uno sfondo verde!

Per testare tutti questi colori e stili nel tuo terminale, puoi utilizzare uno dei seguenti:

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

Puoi anche cambiare altri tipi di file quando usi il comando ls definendo ogni tipo con:

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

Un elenco più completo è disponibile su Bigsoft - Configurazione di LS_COLORS .

Su alcune distribuzioni, potresti anche voler cambiare il colore di sfondo per ow "( OTHER_WRITABLE ) il cui valore predefinito non è leggibile" ad esempio nel testo blu non grassetto su sfondo verde.

Potresti utilizzare ad esempio LS_COLORS="$LS_COLORS:di=1;33" alla fine del tuo file .bashrc , per ottenere un testo in grassetto ben leggibile su sfondo nero.

Dopo aver modificato il file .bashrc, per applicare le modifiche devi riavviare la shell o eseguire source ~/.bashrc .

Nota: puoi combinare più comandi con un due punti , ad esempio

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

Fonte:

risposta data rubo77 15.05.2014 - 09:35
30

Molto semplice. Aggiungi queste tre linee a ~ / .bashrc

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

Se si desidera applicare le modifiche in una sessione di bash in esecuzione, eseguire:

source ~/.bashrc
    
risposta data Abdel Hegazi 11.08.2015 - 15:49
4

LS_COLORS

Questa è una raccolta di estensioni: mappature dei colori, utilizzabili come variabili di ambiente LS COLORS.

    
risposta data rubo77 20.05.2014 - 00:35
3

Oltre alla risposta di Hegazi, puoi effettivamente controllare il colore della directory e molti altri colori usando il comando dircolors. È possibile creare un file di configurazione che sia ben documentato.

Puoi creare un file .dircolor nella tua home directory come segue:

dircolors -p > ~/.dircolors

Quindi nel tuo file ~ / .bashrc aggiungi le linee

eval "'dircolors -b ~/.dircolors'"
alias ls='ls --color=auto'

Questo creerà una variabile $ LS_COLORS per bash. Il flag -c imposterà se per csh. Contrassegna anche il comando ls da visualizzare a colori.

Modifica il valore dell'attributo DIR come sopra nel colore del file ~ / .dircolor per cambiare il colore della directory (o qualsiasi altro tipo di file incluso per altri colori). Puoi anche cambiare i colori di determinati file o definirne di tuoi.

    
risposta data smilingfrog 07.03.2017 - 21:25
1

Questo è il mio approccio per il comando ls con le opzioni comunemente usate:

aggiungi le seguenti righe in un file chiamato ~ / .alias

alias ll='ls -lhF --color=auto'
alias llt='ls -lht --color=auto'
alias lla='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls="ls --color=auto"

aggiungi le seguenti righe in ~ / .bashrc

if [ -f ~/.alias ]; then
    . ~/.alias
fi
    
risposta data Jonathan L 12.08.2017 - 07:33
1

L'opzione --color=auto non funziona con me utilizzando iTerm2 sul mio Mac. L'opzione -G funziona comunque. Ho inserito il seguente alias nel mio ~/.profile e ora le directory sono colorate e hanno aggiunto un% di coda co_de alla fine:

alias ls='ls -F -G'
    
risposta data John Slavick 06.11.2017 - 17:00

Leggi altre domande sui tag