dircolors: modifica la configuración de color globalmente

40

Entiendo los lsusos dircolorspara mostrar resultados en color. dircolorstiene una base de datos predeterminada de colores asociados con las extensiones de archivo, que se pueden imprimir con el comando

dircolors --print-database

Desde man dir_colorsque leí, la base de datos de todo el sistema debería estar ubicada en /etc/DIR_COLORS. Pero este archivo no existe en mi sistema (Debian). ¿Cómo puedo modificar la configuración de color de todo el sistema dircolors? ¿De dónde toma el comando dircolors --print-databasela configuración, cuando no existe un archivo?

Soy consciente de que el usuario puede tener un archivo específico del usuario ~/.dircolorscon su configuración, pero esto no es adecuado para mí, ya que necesito cambiar la configuración para todos.

Una segunda pregunta es si es posible usar colores de 8 bits para colores de dir. Mi terminal es xterm-256color.

usuario1968963
fuente

Respuestas:

36

lstoma la configuración de color de la variable de entorno LS_COLORS. dircolorses simplemente una forma conveniente de generar esta variable de entorno. Para que esta variable de entorno surta efecto en todo el sistema, colóquela en el archivo de inicio de su shell.

Para bash, pondrías esto en /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)"

Para zsh, lo pondrías o harías los /etc/zshrcarreglos para zshleer /etc/profileal inicio. Su distribución podría haber zshhecho eso ya. Solo menciono esto para señalar que la configuración dircolorspara todos realmente depende del shell que usan.

En cuanto a dónde dircolorsobtiene su configuración, cuando no especifica un archivo, solo usa algunos valores predeterminados incorporados.

Puede usar xtermlos 256 códigos de escape de color en su archivo dircolors, pero tenga en cuenta que solo funcionarán para xtermterminales compatibles. No funcionarán en la consola de texto de Linux, por ejemplo.

El formato para 256 códigos de escape de color es 38;5;colorNpara colores de primer plano y 48;5;colorNpara colores de fondo. Así por ejemplo:

.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!
Mate
fuente
1
¿podría explicar cómo puedo usar los 256 códigos de escape de color? Digamos que quiero cambiar lo siguiente .mp3 00;36para usar color126 de la tabla de colores xterm-256 upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963
1
Claro, mira mi edición.
Matt
8

¿De dónde toma el comando dircolors --print-databasela configuración, cuando no existe un archivo?

Según el manual , utiliza una base de datos precompilada en ausencia de un archivo.

Si se especifica el archivo, dircolors lo lee para determinar qué colores usar para qué tipos de archivos y extensiones. De lo contrario, se utiliza una base de datos precompilada. Para obtener detalles sobre el formato de estos archivos, ejecute ' dircolors --print-database'.

Para cambiar la configuración para todos, puede crear un /etc/dircolorsarchivo y agregar lo siguiente a /etc/bashrc:

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

Linux establece los colores de fondo de la consola con dircolors:

Su archivo dircolors controla los colores de las palabras que aparecen a través de ls en la consola. Encuentre este .dircolorsarchivo para su distribución, un enlace para ayudar:

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

Para mí en Fedora 17, mi archivo dircolors es: /etc/DIR_COLORS

Copia /etc/DIR_COLORSen tu /home/el/.dircolorsdirectorio. Créelo si no existe.

Edite /home/el/.dircolors, busque el texto "dir".

Cambia esto:

DIR 01;34   # directory

A esto:

DIR 01;36   # directory

Guarde y cierre y reinicie el shell. Los directorios van del azul oscuro al negro (ilegible) al verde azulado brillante al negro (legible).

Eric Leschinski
fuente
2
-1: no /etc/DIR_COLORSen la distribución de OP, Debian. Y él ya sabe ~/.dircolors, esa no era la pregunta
MestreLion