CLICOLOR y LS_COLORS en bash

48

Tengo la siguiente configuración en .bashrc para colorear los listados.

exportar CLICOLOR = 1
export LS_COLORS = 'no = 00: fi = 00: di = 00; 34: ln = 01; 36: pi = 40; 33: so = 01; 35: do = 01; 35: bd = 40; 33; 01: cd = 40; 33; 01: o = 40; 31; 01: ex = 01; 32: *. tar = 01; 31: *. tgz = 01; 31: *. arj = 01; 31: *. taz = 01; 31: *. Lzh = 01; 31: *. Zip = 01; 31: *. Z = 01; 31: *. Z = 01; 31: *. Gz = 01; 31: *. Bz2 = 01; 31: *. Deb = 01; 31: *. Rpm = 01; 31: *. Jar = 01; 31: *. Jpg = 01; 35: *. Jpeg = 01; 35: *. Gif = 01; 35: * .bmp = 01; 35: *. pbm = 01; 35: *. pgm = 01; 35: *. ppm = 01; 35: *. tga = 01; 35: *. xbm = 01; 35: *. xpm = 01; 35: *. tif = 01; 35: *. tiff = 01; 35: *. png = 01; 35: *. mov = 01; 35: *. mpg = 01; 35: *. mpeg = 01; 35: *. Avi = 01; 35: *. Fli = 01; 35: *. Gl = 01; 35: *. Dl = 01; 35: *. Xcf = 01; 35: *. Xwd = 01; 35: *. Ogg = 01; 35: *. Mp3 = 01; 35: *. Wav = 01; 35: ';

Este sitio muestra el código para los colores, y quiero cambiar el color del directorio a 'color claro'. Pero hacer di de la siguiente manera no lo afecta.

di = 04; 94

Lo interesante es que incluso después de comentar LS_COLORS, puedo ver resultados en color siempre que tenga CLICOLOR = 1.

  • ¿Qué debo hacer para que el color del directorio sea azul claro (94)?
  • ¿Para qué sirve CLICOLOR y LS_COLORS? ¿Por qué colorear funciona sin LS_COLORS?
prosseek
fuente

Respuestas:

53

Hay varias implementaciones diferentes de color para ls, y ha combinado algunas de ellas.

  • En FreeBSD y Mac OS X , lsmuestra colores si se establece la CLICOLORvariable de entorno o si -Gse pasa en la línea de comando. Los colores reales se configuran a través de la LSCOLORSvariable de entorno (los valores predeterminados integrados se usan si esta variable no está configurada). Para mostrar directorios en azul claro, use

    export LSCOLORS=Exfxcxdxbxegedabagacad
  • Con GNU ls , por ejemplo, en Linux, lsmuestra colores si --colorse pasa en la línea de comando. Los colores reales se configuran a través de la LS_COLORSvariable de entorno, que se puede configurar con el dircolorscomando (los valores predeterminados integrados se utilizan si esta variable no está configurada).

Gilles 'SO- deja de ser malvado'
fuente
55
Gracias por la respuesta, ¿podría enseñarme qué significa Exfxcxdxbxegedabagacad?
prosseek
@prosseek: Vea las páginas de manual a las que he vinculado. Por ejemplo, los dos primeros caracteres son el primer plano y el fondo de los directorios, esignifica azul oscuro, Eazul claro y xpredeterminado. fen la tercera posición hace enlaces simbólicos magenta, y así sucesivamente.
Gilles 'SO- deja de ser malvado'
En esta misma línea, ¿cómo hago para treemostrar colores? El árbol muestra colores en mi máquina Debian pero no lo hace en mi Mac. Las variables de entorno están presentes para el color como se describe anteriormente. Entonces mi Mac muestra colores para cualquier lscomando pero no tree. Instalé árbol con cerveza.
DanCat
2
@DanCat No lo sé. treey lsson utilidades no relacionadas, no hay razón por la cual la configuración de una se aplique a la otra. Debes hacer eso como una pregunta separada.
Gilles 'SO- deja de ser malvado'
1
Para la gente perezosa (como yo) aquí hay un generador de LSCOLORS geoff.greer.fm/lscolors
udondan
11

¿Para qué sirve CLICOLOR y LS_COLORS? ¿Por qué colorear funciona sin LS_COLORS?

CLICOLORencenderá o apagará los colores. LS_COLORSno es obligatorio y le permitirá personalizar los colores.

Tenga en cuenta que en algunos sistemas operativos (como MacOSX y FreeBSD), el valor se denomina LSCOLORS, no LS_COLORS.

Evito configurar el color usando LS_COLORS, porque entonces necesito aplicar ese mismo esquema de color en cien computadoras diferentes y 10 Un * xes diferentes. En cambio, modifico el color en mi programa Terminal, que funciona igual en la mayoría de los hosts Unix.

Stefan Lasiewski
fuente