¿Cómo cambio el color de los directorios con ls en la consola?

125

En mi consola, el color de los directorios es tan azul, que es difícil de leer en un fondo oscuro.

¿Cómo puedo cambiar las definiciones de color para ls ?

    
pregunta rubo77 15.05.2014 - 09:27

6 respuestas

189

Para cambiar los colores de su directorio, abra su archivo ~/.bashrc con su editor

nano ~/.bashrc

y realice la siguiente entrada al final del archivo:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

Algunas buenas elecciones de color (en este caso, 0;35 es violeta) son:

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

El primer número es el estilo (1 = negrita), seguido de un punto y coma, y ​​luego el número real del color, los posibles estilos (efectos) son:

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

Los posibles fondos:

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background
107 = white background

Todos los colores posibles:

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

Incluso se pueden combinar, de modo que un parámetro como:

di=1;4;31;42

en su variable LS_COLORS haría que los directorios aparezcan en negrita subrayado texto rojo con fondo verde!

Para probar todos estos colores y estilos en su terminal, puede usar uno de:

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

También puede cambiar otros tipos de archivos cuando usa el comando ls definiendo cada tipo con:

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

Hay una lista más completa disponible en Bigsoft - Configurando LS_COLORS .

En algunas distribuciones, también puede querer cambiar el color de fondo para ow "( OTHER_WRITABLE ) cuyo valor predeterminado no es legible", por ejemplo, para texto azul no negrita sobre fondo verde.

Podrías usar, por ejemplo, LS_COLORS="$LS_COLORS:di=1;33" al final de tu archivo .bashrc , para obtener un bonito texto naranja en negrita y legible sobre fondo negro.

Después de modificar su archivo .bashrc, para poner los cambios en vigencia tendrá que reiniciar su shell o ejecutar source ~/.bashrc .

Nota: Puede combinar más comandos con un dos puntos , por ejemplo

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

Fuente:

respondido por el rubo77 15.05.2014 - 09:35
26

Muy simple. Agregue estas tres líneas a ~ / .bashrc

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

Si desea aplicar los cambios en una sesión bash en ejecución, ejecute:

source ~/.bashrc
    
respondido por el Abdel Hegazi 11.08.2015 - 15:49
3

LS_COLORS

Esta es una colección de extensiones: asignaciones de colores, adecuadas para usar como su variable de entorno LS COLORES.

    
respondido por el rubo77 20.05.2014 - 00:35
2

Además de la respuesta de Hegazi, puedes controlar el color del directorio y muchos otros colores usando el comando dircolors. Puede crear un archivo de configuración que esté bien documentado.

Puede crear un archivo .dircolor en su directorio personal de la siguiente manera:

dircolors -p > ~/.dircolors

Luego en su archivo ~ / .bashrc agregue las líneas

eval "'dircolors -b ~/.dircolors'"
alias ls='ls --color=auto'

Esto creará una variable $ LS_COLORS para bash. El distintivo -c se establecerá si para csh. También marca el comando ls para mostrar en color.

Edite el valor del atributo DIR como se muestra arriba en el color del archivo ~ / .dircolor para cambiar el color del directorio (o cualquiera de los otros tipos de archivos incluidos para otros colores). También puede cambiar los colores de archivos específicos o definir los suyos propios.

    
respondido por el smilingfrog 07.03.2017 - 21:25
0

El es mi enfoque para el comando ls con opciones de uso común:

agregue las siguientes líneas en un archivo llamado ~ / .alias

alias ll='ls -lhF --color=auto'
alias llt='ls -lht --color=auto'
alias lla='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls="ls --color=auto"

agregue las siguientes líneas en ~ / .bashrc

if [ -f ~/.alias ]; then
    . ~/.alias
fi
    
respondido por el Jonathan L 12.08.2017 - 07:33
0

La opción --color=auto no funciona para mí usando iTerm2 en mi Mac. La opción -G funciona bien. Puse el siguiente alias en mi ~/.profile y ahora los directorios son de color y tienen un / posterior anexado:

alias ls='ls -F -G'
    
respondido por el John Slavick 06.11.2017 - 17:00

Lea otras preguntas en las etiquetas