2009-02-28 11 views
35

Cuando realiza ls en un shell bash, a veces hay colores para indicar diferentes tipos de recursos, y puede habilitar/controlar esto con el argumento --color.¿Cómo se determina qué significa bash ls colors?

Pero ni el hombre ni la página Google está proporcionando una respuesta a la pregunta: ¿

¿Qué tienen estos colores indican de forma predeterminada, y cómo puedo mostrar lo que utiliza el sistema actual?


ACTUALIZACIÓN:

Gracias a todos por las respuestas hasta el momento, sin embargo, para hacer más fácil elegir un ganador, ¿alguien puede ir un paso más allá y proporcionar un método para descripciones de salida en el colores a los que se aplican.

Hmmm ... mi ejemplo no funciona cuando se publiquen (sólo cuando previamente), por lo que si se está revisando el código que va a mostrar lo que quiero decir ...

<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> 

Gracias.

Respuesta

43

Los colores están definidos por la variable de entorno $LS_COLORS. Dependiendo de su distribución, se genera automáticamente cuando se inicia el shell, usando ~/.dircolors o /etc/DIR_COLORS.

Editar:

lista Para significados de los colores, utilizar este 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

Creo que usa AMBAS - las predeterminadas se establecen en DIR_COLORS, y cualquier cosa en ~/.dir_colors tiene prioridad. – chris

+1

Tal vez ... No conozco otras distribuciones, en Fedora, se establece en /etc/profile.d/colorls.sh, y solo lee una de ellas. – Juliano

+0

Es una buena secuencia de comandos, pero también me gustaría poder ver los colores de las extensiones que no figuran en la lista. –

3

Debería poder ver la lista de asignaciones en/etc/DIR_COLORS. Puede anularlo creando .dir_colors en su directorio de inicio.

3

probar "man 5 DIR_COLORS" para ver cómo se encuentra en su sistema. El mío no tiene/etc/DIR_COLORS, por lo que debe establecerse en otro lugar.

2

Google para LS_COLORS para algunos enlaces útiles.

Editar: para enumerar los colores, este sencillo script bash puede dar una idea:

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

Gracias Neil ... lamentablemente no hay forma de aceptar una respuesta secundaria/parcial, y la de Juliano es un poco más completa. –

Cuestiones relacionadas