Cómo cambiar los colores de directorios y archivos en el comando ls

Cómo cambiar los colores de directorios y archivos en el comando ls

Si ha ejecutado el ls en Bash, notará que los directorios y archivos que ve están coloreados de acuerdo con su tipo. Puede personalizar su propia combinación de colores para elegir diferentes colores de texto, colores de fondo y formato como negrita y subrayado.

Como funciona

El esquema de color se almacena en la variable LS_COLORS. Para mostrar su esquema de color actual, puede decirle al Bash que imprima el contenido de la variable:

echo $LS_COLORS

Verá una larga lista de tipos de archivos y códigos numéricos. Le mostraremos cómo crear una lista como esta usted mismo.

Antes de jugar con esto, le recomendamos que guarde el contenido actual de la variable LS_COLORS en otra variable. Esto le permitirá restaurar rápidamente la configuración predeterminada sin cerrar la sesión del shell y volver a iniciar sesión, o cerrar y volver a abrir la ventana del terminal. Para guardar el contenido actual de la variable LS_COLORS en una nueva variable llamada ORIGINAL, ejecute:

ORIGINAL=$LS_COLORS

En cualquier momento, puede ejecutar el siguiente comando para deshacer sus cambios y restaurar los colores predeterminados:

LS_COLORS=$ORIGINAL

Sus cambios son siempre temporales hasta que edite un archivo para convertirlos en sus nuevos valores predeterminados. Siempre puede cerrar la sesión y volver a iniciarla o cerrar y volver a abrir una ventana de terminal para restaurar los colores a su configuración predeterminada. Sin embargo, esto hace que sea fácil de hacer con un solo comando rápido.

Cómo definir colores personalizados

La variable LS_COLORS contiene una lista de tipos de archivos y sus códigos de color asociados. La lista predeterminada es larga porque especifica diferentes colores para varios tipos de archivos diferentes.

Comencemos con un ejemplo básico para mostrar cómo funciona. Digamos que queremos cambiar el color del directorio de azul negrita por defecto a rojo negrita. Podemos ejecutar el siguiente comando para hacer esto:

LS_COLORS="di=1;31"

los di=1;31 poco decir ls que los directoriosdi) somos (=) grasa (1;) Rojo (31).

Sin embargo, esta es solo una variable LS_COLORS muy simple que establece los directorios como un color y deja todos los demás tipos de archivos como el color predeterminado. Digamos que también queremos hacer que los archivos con la extensión de archivo .desktop tengan un color cian subrayado. Podemos ejecutar el siguiente comando para hacer esto:

LS_COLORS="di=1:31:*.desktop=4;36"

Dice ls que los directoriosdi) somos (=) grasa (1;) Rojo (31) y (:) cualquier archivo que termine en .desktop (*.desktop) es (=) subrayado (4;) cian36).

Este es el proceso de ensamblar su lista de tipos de archivos y colores. Especifique tantos como desee en la forma filetype = color, cada uno separado por dos puntos (:).

Para crear su propia lista, solo necesitará conocer la lista codificada por colores y los códigos de tipo de archivo. Esto usa los mismos códigos de color numéricos que usa cuando cambia el color en su indicador de Bash.

Aquí está la lista de códigos de color para texto en primer plano:

  • Negro: 30
  • Azul: 34
  • Cian: 36
  • Verde: 32
  • Morado: 35
  • Rojo: 31
  • Blanco: 37
  • Amarillo: 33

Por ejemplo, dado que el texto amarillo es el código de color 33, usaría di=33 para que los directorios se vuelvan amarillos.

Aquí está la lista de atributos de color de texto:

  • Texto normal: 0
  • Texto en negrita o claro: 1 (depende del emulador de terminal).
  • Texto débil: 2
  • Texto subrayado: 4
  • Texto intermitente: 5 (esto no funciona en la mayoría de los emuladores de terminal).
  • Texto inverso: 7 (Esto invierte los colores de primer plano y de fondo, por lo que verá texto negro sobre fondo blanco si el texto actual es texto blanco sobre fondo negro).
  • Ocultar texto: 8

Al especificar un atributo o varios códigos de color, separe la lista de códigos con un punto y coma (;). No necesita especificar 0 para texto normal, porque el texto normal se usa cuando no especifica un atributo aquí.

Por ejemplo, debido a que el texto en negrita es el código de color 1 y el texto amarillo es el código de color 33, debería usar di=1;33 para poner los directorios en amarillo y en negrita. También puede especificar varios atributos. Por ejemplo, puede utilizar di=1;4;33 para poner los directorios en negrita, subrayados en amarillo.

Aquí está la lista de códigos de color de fondo:

  • Fondo oscuro: 40
  • Fondo azul: 44
  • Fondo cian: 46
  • Fondo verde: 42
  • Fondo morado: 45
  • Fondo rojo: 41
  • Fondo blanco: 47
  • Fondo amarillo: 43

Por ejemplo, dado que un fondo azul corresponde al código de color 44, usaría di=44 para utilizar un fondo azul para los directorios. También puede combinar código de color de fondo, código de color de primer plano y tantos atributos como desee. Por ejemplo, di=1;4;33;44 le daría texto amarillo subrayado en negrita sobre un fondo azul.

Aquí está la lista de códigos de tipo de archivo:

  • Directorio: di
  • Archivo: fi
  • Enlace simbólico: ln
  • Canal con nombre (FIFO): pi
  • Tomado: por lo tanto
  • Bloquear el dispositivo: bd
  • Dispositivo de caracteres: cd
  • Enlace simbólico huérfano (apunta a un archivo que ya no existe): o
  • Archivo perdido (un archivo perdido señalado por un enlace simbólico huérfano): mi
  • Archivo ejecutable (tiene permiso «x»): ej.
  • * .extension: cualquier archivo que termine con una extensión que usted especifique. Por ejemplo, use * .txt para archivos que terminan en .txt, * .mp3 para archivos que terminan en .mp3, * .desktop para archivos que terminan en .desktop o cualquier otra cosa que desee. Puede especificar tantas extensiones de archivo diferentes como desee.

Especifique tantos tipos diferentes de códigos de tipo de archivo con tantos colores diferentes como desee, separados por el carácter :. Repita este proceso para ensamblar su variable LS_COLORS.

Por ejemplo, suponga que desea utilizar texto violeta en negrita para directorios, texto rojo subrayado para archivos ejecutables y texto verde negrita sobre fondo rojo para archivos .mp3. Al recopilar los códigos de tipo de archivo y los códigos de color de las listas anteriores, obtendrá:

LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"

Cómo configurar sus nuevos colores predeterminados

Ahora tiene una variable LS_COLORS personalizada trabajando en la sesión actual de Bash. Sin embargo, probablemente querrá hacerlo permanente para que se use automáticamente cada vez que inicie una nueva sesión de Bash sin que tenga que recordarlo.

Puede definir su variable LS_COLORS personalizada, y cualquier otra variable Bash que desee, agregándola al archivo .bashrc de su cuenta de usuario. Este archivo se encuentra en ~ / .bashrc. Entonces, si su nombre de usuario es bob, lo encontrará en /home/bob/.bashrc. También hay otras formas de establecer variables de entorno, pero esta es sencilla.

Primero, abra este archivo en su editor de texto favorito. Usaremos nano como ejemplo aquí, pero puede usar vi, emacs o lo que quiera.

nano ~/.bashrc

Agregue su variable LS_COLORS personalizada a una nueva línea al final del archivo, así:

LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"

Guarda el archivo y cierra. En nano, presione Ctrl + O, luego presione Entrar para guardar, luego presione Ctrl + X para salir.

Cada vez que inicie una nueva sesión de Bash, Bash leerá el archivo .bashrc y establecerá automáticamente su variable LS_COLORS. Para cambiar sus colores en el futuro, vuelva a su archivo .bashrc y edite la línea LS_COLORS.

También puede simplemente eliminar el LS_COLORS= línea que agregó a su archivo .bashrc para usar los colores predeterminados nuevamente. Si no establece el valor LS_COLORS, Bash utilizará los colores predeterminados.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas