¿Cómo cambiar el color de salida del comando ls en la terminal en OS X e iTerm2?

¿Cómo cambiar el color de salida del comando ls en la terminal en OS X e iTerm2?

Sé que se ha hecho una pregunta similar en:

¿Cómo colorear la salida de ls?

aunque realmente no entendí la respuesta y realmente no pude hacerla funcionar.

Sin embargo, he probado algo diferente. Decidí leer la página del manual lsy menciona diferentes variables de entorno que se pueden configurar al manejar el lscomando. Si uno va a la -Gopción, dice mirar las CLICOLORvariables de entorno. lo hice yesouno lo vincula a la documentación de la LSCOLORSvariable de entorno. Fui a él y menciona:

"El valor de esta variable describe qué color usar para qué atributo cuando los colores están habilitados con CLICOLOR. Esta cadena es una concatenación de pares del formato fb, donde f es el color de primer plano y b es el color de fondo. "

También menciona que el valor predeterminado de LSCOLORS es "exfxcxdxbxegedabagacad" y que cada parte especifica el color de algo específico en el comando ls. Por ejemplo, el primer par ex del ejemplo especifica el color de los directorios. el segundo cambia el color de los enlaces simbólicos, etc. e significa azul y x significa "primer plano" predeterminado.

1) Primero, ¿qué significa esto: "cuando los colores están habilitados con CLICOLOR"?

2) ¿Qué hace"primer plano"¿significar?

¿Cuáles deben ser las variables de entorno para que el lscomando coloree la salida como yo desee?


También probé:

ls --color

Pero me arrojó el siguiente error:

ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

Ocurrió el mismo error cuando lo hice ls --color=auto: solo también arroja un error. No tengo idea de por qué y no estoy seguro de si se debió a iTerm2 o OS X o por qué sucedió eso. Parece que funciona en otros sistemas...

Respuesta1

Mientras intentaba responder mi propia pregunta, probé algunas cosas diferentes y todo funcionó experimentando.

1) Supongo que "habilitar CLICOLOR" significa establecerlo en 1 (es decir, verdadero) porque una vez que configuré esa variable en 1, LSCOLOR comenzó a funcionar.

2) En este contexto, "Primer plano" significa el resaltado de fondo que se aplicará. Por ejemplo, bc para el primer par significa que coloreará los caracteres de los directorios en rojo, mientras que el fondo/resaltado será verde. Por ejemplo, si su var de entorno es como: export LSCOLORS="bCfxcxdxbxegedabagacad"

luego al hacer ls se muestra algo como esto:

ingrese la descripción de la imagen aquí

Obviamente, para que esto funcione, el comando ls debe tener el alias ls -G (o simplemente hacer ls -G cada vez) y debe tener las siguientes líneas en su .bashrc o cualquier archivo shell rc que use:

export CLICOLOR=1
export LSCOLORS="gxfxcxdxbxegedabagacad"

Ahora puede cambiar los LSCOLORS como desee según lo especificado en el archivo man ls.

Puede haber diferentes formas de hacer que esto funcione, pero así es como funcionó para mí en Unix en OS X mavericks en iTerm2.

Respuesta2

Reemplace --colorcon -Gcuando esté en funcionamiento ls.

información relacionada