2009-02-28 11 views
35

Quando si esegue ls in una shell bash, a volte ci sono colori per indicare diversi tipi di risorse, e si può abilitare/controllare questo con l'argomento --color.Come si determinano i colori bash ls?

Ma né la pagina di uomo né di Google è fornire una risposta alla domanda:

Cosa significano questi colori indicano per impostazione predefinita, e come faccio a visualizzare quello che utilizza il sistema attuale?


UPDATE:

Grazie a tutti per le risposte finora, ma per rendere più facile scegliere un vincitore, chiunque può fare un passo ulteriore e di fornire un metodo per descrizioni di uscita del colori a cui si applicano.

Hmmm ... il mio esempio non funziona al momento della pubblicazione (solo quando in anteprima), quindi se si visualizza l'anteprima di questo codice che verrà visualizzato quello che voglio dire ...

<ul style="list-style:none; background:black; margin:0;padding:0.5em; width:10em"> 
    <li style="color:blue">directory</li> 
    <li style="color:aqua">symbolic link</li> 
    <li style="color:#A00000;">*.tar files</li> 
    <li style="color:white">...</li> 
</ul> 

Grazie.

risposta

43

I colori sono definiti dalla variabile di ambiente $LS_COLORS. A seconda della distro, viene generato automaticamente all'avvio della shell, utilizzando ~/.dircolors o /etc/DIR_COLORS.

Edit:

Per elencare i significati dei colori, utilizzare questo script:

eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g') 
{ 
    IFS=: 
    for i in $LS_COLORS 
    do 
    echo -e "\e[${i#*=}m$(x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x")\e[m" 
    done 
} 
+0

Credo che usi BOTH - i valori di default sono impostati in DIR_COLORS e qualsiasi cosa in ~/.dir_colors ha la precedenza. – chris

+1

Forse ... Non conosco altre distro, in Fedora, è impostato in /etc/profile.d/colorls.sh, e ne legge solo uno. – Juliano

+0

Questo è uno script piacevole, ma mi piacerebbe anche essere in grado di vedere i colori per le estensioni che non hai elencato. –

3

Dovresti riuscire a visualizzare l'elenco dei mapping in/etc/DIR_COLORS. Puoi sovrascriverlo creando.dir_colors nella tua home directory.

3

Try "man 5 dir_colors" per vedere come è impostato sul sistema. Il mio non ha/etc/DIR_COLORS quindi deve essere impostato altrove.

2

Google per LS_COLORS per alcuni collegamenti utili.

Edit: Per elencare i colori, questo semplice script bash può dare un'idea:

IFS=: 
set $LS_COLORS 
for C in $* 
do 
    IFS='=' 
    set $C 
    echo -e "\033[$2m$1\033[00m" 
done 
+0

Grazie Neil ... purtroppo non c'è un modo per accettare una risposta secondaria/parziale, e quella di Juliano è leggermente più completa. –