Destacar visualmente enlaces rotos en terminal al usar "ls" en GNU/Linux
Depende de la distribución GNU/Linux usada la configuración de colores de la salida del comando “ls” puede variar. Por defecto hay unos valores de colores concretos en base al tipo de archivo, esos valores pueden ser consultados mediante el comando “dircolors -p”.
La variable “LS_COLORS” permite establecer los colores de los archivos de una manera personalizada, según los permisos, extensión y el tipo de archivo. Esta variable puede venir inicializada de serie, como sucede en las distribuciones CentOS, Ubuntu, Debian etc, las cuales agregan alguna configuración extra (cada distro a su manera), como puede ser la de marcar enlaces rotos de forma especial. Otras distribuciones como Arch Linux que no suelen traer retoques de manera predeterminada, no tienen inicializada la variable y por tanto se utiliza el esquema de colores predeterminado de ls. Por lo tanto en distribuciones tipo Arch es recomendable inicializar la variable por lo menos con los valores predeterminados de dircolors.
Ficheros de configuración de colores en sistemas CentOS / Fedora.
/etc/DIR_COLORS.$TERM /etc/DIR_COLORS.$TERM $HOME/.dircolors $HOME/.dircolors.$TERM $HOME/.dir_colors $HOME/.dir_colors.$TERM
/etc/DIR_COLORS.256color # Por norma la más utilizada si se usa escritorio "echo $TERM". /etc/DIR_COLORS /etc/DIR_COLORS.lightbgcolor
Script que carga los esquemas de colores en CentOS: /etc/profile.d/colorls.sh
En Debian/Ubuntu se implementa otra forma de cargarlo y no hay ficheros en /etc/. Se usa el fichero /etc/skel/.bashrc para que al crear un usuario ya venga inicializa la variable “LS_COLORS”.
Comando dircolors: Ayuda a configurar la variable “LS_COLORS”.
dircolors # Muestra el contenido de la variable "LS_COLORS" junto con un export de la misma para poder integrarlo en scripts. dircolors -b fichero # Visualiza "LS_COLORS" según se defina en el fichero enviado como parámetro. dircolors -p # Muestra el esquema de colores predeterminado.
Configurar la visualización de enlaces rotos en el comando ls
Una configuración que me gusta particularmente es tener en rojo el enlace y el destino en el color predeterminado de la consola pero parpadeando. Para eso se puede expandir la variable “LS_COLORS” en algún fichero tipo “/etc/bash.bashrc” o “/etc/profile” con un esquema que tenga esa personalización.
Aquí se propone una configuración estándar, en sistemas como puede ser CentOS podría hacerse desde sus ficheros de configuración en /etc. Recordemos que cada distribución de GNU/Linux carga el esquema de una manera concreta, no hay una manera estándar de configurarlo. Hacer esta búsqueda con grep en /etc puede ayudar a entender como fue configurada la distribución para cargar la variable “LS_COLOR”.
grep -ri "LS_COLOR\|dircolors" /etc/
Generamos el esquema de colores predeterminado.
dircolors -p > $HOME/fichero_color
Editar el fichero “fichero_color” para adaptar la configuración de enlaces no funcionales.
#ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ... #MISSING 00 # ... and the files they point to ORPHAN 232;38;5;9 # symlink to nonexistent file, or non-stat'able file MISSING 05;5;232;38;5;15 # ... and the files they point to
Configurar la variable en el fichero deseado para hacer la configuración persistente, por ejemplo /etc/profile.
dircolors -b $HOME/fichero_color >> /etc/profile
Hay muchas tablas con los códigos de color y configuraciones personalizas en internet a golpe de buscador que se pueden usar para adaptar nuestro esquema particular.
NOTA: Al listar directorios con cientos de miles de ficheros, se recomienda no usar la opción “--color” de ls para tener un mejor rendimiento.