¿Qué significan los diferentes colores en LS?

Qué hacen los diferentes colores en Ubuntu ls ¿quieres decir? Por ejemplo, cuando escribo el ls comando en una de mis carpetas, obtengo uno de los archivos en verde claro, el otro (que es una carpeta) en azul con resaltado en verde.

¿Qué significan esos colores, y hay algún manual sobre todos los colores?

  • Azul: Directorio
  • Verde: Archivo de datos ejecutable o reconocido
  • Cian (Azul Cielo): Archivo de enlace simbólico
  • Amarillo con fondo negro: Dispositivo
  • Magenta (Rosa): Archivo de imagen gráfica
  • Rojo: Archivo de archivo
  • Rojo con fondo negro: Enlace roto

Para su información:

  • Para desactivar el color, debe comentar las siguientes líneas en .bashrc.

    # enable color support of ls and also add handy aliases#if [ -x /usr/bin/dircolors ]; then#    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"#    alias ls='ls --color=auto'#    #alias dir='dir --color=auto'#    #alias vdir='vdir --color=auto'##    alias grep='grep --color=auto'#    alias fgrep='fgrep --color=auto'#    alias egrep='egrep --color=auto'#fi
  • Además, si desea ver sus propios significados de color de bash, copie/pegue los siguientes códigos en su terminal.

    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       } 

Salida:
terminal output

Nota:

  • Para obtener más información, escriba man dir_colors en la terminal.

Puedes averiguar qué colores ls usos al mirar el $LS_COLORS variable:

  • Turquesa: archivos de audio1
  • Rojo brillante: Archivos y archivos comprimidos2
  • Púrpura: imágenes y vídeos3

Además, los archivos se colorean por atributos:

alt text


  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzma, tz, tz, zip, z, Z, Dz, gz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, tarro, rar, un ojo, zoológico, tikpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, anx, ogv, ogx.


Toda esta información está contenida en la salida de dircolors --print-database pero su formato es bastante ilegible.

Aquí hay una explicación técnica de lo que está sucediendo:

Ejemplo:

CHR 40;33;01

El código de colores consta de tres partes:

  • La primera parte antes del punto y coma representa el estilo de texto.

    • 00=ninguno, 01=negrita, 04=subrayado, 05=parpadeo, 07=reverso, 08=oculto.
  • La segunda y tercera parte son el color y el color de fondo:

    • 30=negro, 31=rojo, 32=verde, 33=amarillo, 34=azul, 35=magenta, 36=cian, 37=blanco.

Cada parte se puede omitir, suponiendo que comience por la izquierda. es decir, "01" significa negrita, "01;31" significa negrita y rojo. Y conseguiría que su terminal imprimiera en color escapando de la instrucción con \33[ y terminándolo con un m. 33, o 1B en hexadecimal, es el signo ASCII "ESCAPE" (un carácter especial en el conjunto de caracteres ASCII). Ejemplo:

"\33[1;31mHello World\33[m"

Imprime "Hello World" en rojo brillante.

Comando ls con el argumento --color=auto (en Ubuntu, ls es un alias para ls --color=auto) revisa todos los nombres de archivo e intenta primero hacer coincidir diferentes tipos, como Ejecutable,Tubería, etc. A continuación, intenta hacer coincidir expresiones regulares como *.wav e imprime el nombre de archivo resultante, incluido en estas instrucciones de cambio de color para bash.

Esto se expande Respuesta de Karthick87.


Lista completa, con la configuración predeterminada

  • Sin color (blanco): file o texto sin nombre de archivo (por ejemplo, permisos en la salida de ls -l) o multi-hardlink archivo
  • Azul intenso: directorio
  • Cian en negrita: enlace simbólico
  • Verde intenso: archivo ejecutable
  • Rojo intenso: archivo
  • Magenta en negrita: archivo de imagen, vídeo, gráfico, etc. o puerta o zócalo
  • Cian: archivo de audio
  • Amarillo con fondo negro: tubería (TAMBIÉN CONOCIDA COMO FIFO)
  • Amarillo intenso con fondo negro: dispositivo de bloqueo o dispositivo de carácter
  • Rojo intenso con fondo negro: enlace simbólico huérfano o archivo faltante
  • Sin color con fondo rojo: archivo set-user-ID
  • Negro con fondo amarillo: archivo set-group-ID
  • Negro con fondo rojo: archivo con capacidad
  • Blanco con fondo azul: sticky directorio
  • Azul con fondo verde: otro-directorio grabable
  • Negro con fondo verde: directorio fijo y de otro tipo grabable

Ten en cuenta que el rojo intenso se ve naranja, el negro se ve gris oscuro, el cian se ve azul/verde y el magenta intenso se ve morado/rosa/lavanda.

Script para mostrar colores

#!/bin/bash# For LS_COLORS, print type and description in the relevant color.declare -A descriptions=(    [bd]="block device"    [ca]="file with capability"    [cd]="character device"    [di]="directory"    [do]="door"    [ex]="executable file"    [fi]="regular file"    [ln]="symbolic link"    [mh]="multi-hardlink"    [mi]="missing file"    [no]="normal non-filename text"    [or]="orphan symlink"    [ow]="other-writable directory"    [pi]="named pipe, AKA FIFO"    [rs]="reset to no color"    [sg]="set-group-ID"    [so]="socket"    [st]="sticky directory"    [su]="set-user-ID"    [tw]="sticky and other-writable directory")IFS=:for ls_color in $LS_COLORS; do    color="${ls_color#*=}"    type="${ls_color%=*}"    # Add description for named types.    desc="${descriptions[$type]}"    # Separate each color with a newline.    if [[ $color_prev ]] && [[ $color != "$color_prev" ]]; then        echo    fi    printf "\e[%sm%s%s\e[m " "$color" "$type" "${desc:+ ($desc)}"    # For next loop    color_prev="$color"doneecho

Salida con configuración predeterminada:

gnome-terminal screenshot - default

Salida con mi configuración (dircolors personalizados y tema de terminal solarizado personalizado):

gnome-terminal screenshot - custom

Obtuve las descripciones de dircolors -p y man dir_colors, y llené los vacíos con mi propia investigación.

Los colores y las descripciones son los mismos de 14.04 a 17.10.

Si escribe dircolors (echo $LS_COLORS también funciona) desde la línea de comandos obtendrá una lista de códigos y colores para muchos tipos de archivos en 1 línea. dircolors --print-database les muestra 1 línea a la vez. Aquí hay una breve lista (traté de poner los más importantes). En la parte inferior hay una explicación sobre lo que representan los diferentes códigos al final de cada línea:

NORMAL 00 # por defecto global, aunque todo debería ser algo.ARCHIVO 00 # directorio de archivos normal 01;34 # enlace de directorio 01;36 # enlace simbólico. (Si establece esto en 'destino' en lugar de un valor # numérico, el color es el del archivo al que se apunta.)FIFO 40;33 # pipeSOCK 01;35 # socketDOOR 01;35 # doorBLK 40;33;01 # controlador de dispositivo de bloqueCHR 40;33;01 # controlador de dispositivo de caracteresorphan 40;31;01 # enlace simbólico a un archivo inexistente o no estatalizable fileSETUID 37;41 # archivo que es setuid (u+s)SETGID 30;43 # archivo que es setgid (g+s)STICKY_OTHER_WRITABLE 30;42 # dir que es pegajoso y de otro tipo grabable (+t, o+w) OTHER_WRITABLE 34;42 # dir que es de otro tipo grabable (o+w) y no pegajoso 37;44 # dir con el bit pegajoso establecido (+t) y no de otro tipo grabable# archivado o comprimido (rojo brillante).alquitrán 01;31.tgz 01; 31 # formatos de imagen. jpg 01; 35.jpeg 01; 35.gif 01; 35.bmp 01;35# formatos de audio.caa 00;36.flac 00; 36.ogg 00;36
  • Códigos de atributo: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Códigos de color de texto: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Códigos de color de fondo: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Si desea jugar con esto, aquí hay un ejemplo sobre cómo establecer un color para un archivo:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Esto establecerá *.ogg y .mp3 a bold magenta. Y si lo pones en tu .bashrc el archivo se convertirá en permanente.

Ninguna de las respuestas aquí incluye las 256 opciones de color en las últimas versiones de Ubuntu. Soy deficiente en color (algunos colores me dan problemas uno cerca del otro), por lo que el directorio azul predeterminado en negro es muy difícil de leer para mí. Lo que sigue es mi investigación para cambiar eso.

Tipo dircolors -p |less para ver el código de color actual.

Predeterminado .bashrc ya debería estar configurado no solo para aprovechar el código de color del sistema, sino también uno en ~/.dircolors así que vuelca la salida de dircolors a .dircolor para que pueda comenzar con eso usando este comando.dircolors -p > ~/.dircolors

Alternativa: elija un dircolors de 256 colores muy similar de seebi's solarizado proyecto.

Agarra esto colortest script y ejecutarlo con el comando colortest -w para que pueda ver todos los colores a la vez. Elige un color. Me gusta el naranja #208. Quiero que sea el color del texto, así que usando esta información en códigos de color extendidos, puedo aplicarlo.

Así que tienes un color, ahora qué. Primero tenemos que crear la cadena.

El primer número será un código de atributo, lo más probable es que sea 00, pero si desea que parpadee, vaya con 05:

Elija un código de atributo: 00=ninguno 01=negrita 04=subrayado 05=parpadeo 07=reverso 08=oculto

Siguiente selección append ;38;5; a ese código de atributo para indicar el color de su texto para obtener 00; 38; 5; y luego agregue su color. Elegí 208, así que obtengo 00;38;5;208.

Si también desea ponerle un fondo, elija otro color (digamos 56) con el script colortest y el append ;48;5; para el fondo y 56 para el color para obtener una cadena total de 00;38;5;208;48;5;56.

Así que ahora lo tienes, ¿qué haces con él?

vim ~/.dircolors y encuentre la sección que desea cambiar (para mí, que es DIR) a la cadena que determinamos anteriormente "00;38;5;208".

Esto no se aplicará de inmediato, deberá cargar la configuración. Utilizar dircolors ~/.dircolors al código get para establecer la variable LS_COLORS. Simplemente puede pegarlo en su sesión de terminal o puede cerrar su terminal y volver a abrirlo. También puede canalizar eso a un archivo y ejecutarlo como un script de shell.

Puedes hacer este mismo procedimiento con 16 colores. No necesitas las cosas especiales de ;38;5 o ;48;5. Simplemente arroje los números a la cuerda y disfrute de la simplicidad.

Gracias a Y y seebi por sus notas y código sobre esto.