Página principal » cómo » 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 has ejecutado el ls En Bash, verás que los directorios y archivos que ves están coloreados según 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 esto

    El esquema de color se almacena en la variable LS_COLORS. Para ver su combinación de colores actual, puede indicar a Bash que imprima el contenido de la variable:

    echo $ LS_COLORS

    Verás una larga lista de tipos de archivos y códigos numéricos. Te explicaremos cómo crear una lista como esta..

    Antes de jugar con esto, recomendamos guardar el contenido actual de la variable LS_COLORS en otra variable. Esto le permitirá restaurar rápidamente la configuración predeterminada sin salir del shell y volver a iniciarla, 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 los 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 sesión y volver a iniciarla o cerrarla 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 hacerlo con un solo comando rápido.

    Cómo establecer colores personalizados

    La variable LS_COLORS contiene una lista de tipos de archivos junto con los 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 demostrar cómo funciona esto. Digamos que queremos cambiar el color de los directorios del azul en negrita predeterminado al rojo en negrita. Podemos ejecutar el siguiente comando para hacerlo:

    LS_COLORS = "di = 1; 31"

    los di = 1; 31 bit dice ls que los directorios (di) son (=) negrita (1;) rojo (31).

    Sin embargo, esta es solo una variable LS_COLORS muy simple que define los directorios como un color y deja a cada otro tipo de archivo como el color predeterminado. Digamos que también queremos hacer archivos con la extensión de archivo .desktop de un color cian subrayado. Podemos ejecutar el siguiente comando para hacerlo:

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

    Esto le dice a ls que los directorios (di) son (=) negrita (1;) rojo (31) y:) cualquier archivo que termine en .desktop (*.escritorio) es (=) subrayado (4;) cian36).

    Este es el proceso para ensamblar su lista de tipos de archivos y colores. Especifique tantos como desee en el formulario filetype = color, separándolos con un carácter de dos puntos (:).

    Para armar su propia lista, solo necesita conocer la lista de códigos de colores y códigos de tipo de archivo. Utiliza 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 el texto de primer plano:

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

    Por ejemplo, como el texto amarillo es el código de color 33, usarías di = 33 hacer directorios 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 oscuro: 2
    • Texto subrayado: 4
    • Texto parpadeante: 5 (esto no funciona en la mayoría de los emuladores de terminal).
    • Texto invertido: 7 (Esto invierte los colores de fondo y primer plano, por lo que verá texto negro sobre un fondo blanco si el texto actual es texto blanco sobre un fondo negro).
    • Texto oculto: 8

    Al especificar un atributo o más de un código de color, separe la lista de códigos con un carácter de punto y coma (;). No es necesario especificar 0 para el texto normal, ya que el texto normal se usa cuando no se especifica un atributo aquí.

    Por ejemplo, como el texto en negrita es el código de color 1 y el amarillo el código de color 33, usaría di = 1; 33 Para hacer directorios en negrita amarilla. También puede especificar más de un atributo. Por ejemplo, podrías usar di = 1; 4; 33 Hacer directorios en negrita, subrayados en amarillo..

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

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

    Por ejemplo, como un fondo azul es el código de color 44, usarías di = 44 utilizar un fondo azul para directorios. También puede combinar un código de color de fondo, un código de color de primer plano y tantos atributos como desee. Por ejemplo, di = 1; 4; 33; 44 Le daría un 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
    • Tubería con nombre (FIFO): pi
    • Zócalo: por lo
    • Dispositivo de bloque: bd
    • Dispositivo de caracteres: cd
    • Enlace simbólico huérfano (señala a un archivo que ya no existe): o
    • Archivo faltante (un archivo faltante al que apunta un enlace simbólico huérfano): mi
    • Archivo ejecutable (tiene el permiso “x”): ex
    • * .extension: cualquier archivo que termine con una extensión que usted especifique. Por ejemplo, use * .txt para los archivos que terminan en .txt, * .mp3 para los archivos que terminan en .mp3, * .desktop para los 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, supongamos que desea utilizar texto en negrita púrpura para directorios, texto en rojo subrayado para archivos ejecutables y texto en negrita en verde sobre fondo rojo para archivos .mp3. Al juntar los códigos de tipo de archivo y los códigos de color de las listas anteriores, obtendría:

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

    Cómo configurar tus nuevos colores por defecto

    Ahora tiene una variable LS_COLORS personalizada que funciona en la sesión actual de Bash. Sin embargo, es probable que desee que sea permanente para que se use automáticamente cada vez que inicie una nueva sesión de Bash sin tener que recordar esto.

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

    Primero, abre este archivo en tu editor de texto preferido. Aquí usaremos nano como ejemplo, pero puede usar vi, emacs o cualquier otra cosa que desee.

    nano ~ / .bashrc

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

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

    Guarda el archivo y cierra. En nano, presione Ctrl + O y 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 configurará automáticamente su variable LS_COLORS. Para cambiar los colores en el futuro, vuelva a su archivo .bashrc y edite la línea LS_COLORS.

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