Coloreando scripts en BASH

Con este artículo inauguro mi participación en este sitio. Espero aportar varios trucos que tengo guardados y otros que vaya aprendiendo a lo largo de mi existencia. Con un saludo a todos los integrantes de all-in.cl doy paso a mi primer artículo.

Cuando se hacen scripts en BASH (para automatizar tareas en linux) es posible añadir color a las salidas, para mejorar la parte visual del script. Esto se puede hacer de forma bastante sencilla, como se explica a continuación:

Lo primero es – por comodidad – definir variables para los colores:

black='\e[0;30m'
BLACK='\e[1;30m'
red='\e[0;31m'
RED='\e[1;31m'
green='\e[0;32m'
GREEN='\e[1;32m'
yellow='\e[0;33m'
YELLOW='\e[1;33m'
blue='\e[0;34m'
BLUE='\e[1;34m'
mag='\e[0;35m'
MAG='\e[1;35m'
cyan='\e[0;36m'
CYAN='\e[1;36m'
white='\e[0;37m'
WHITE='\e[1;37m'
NC='\e[0m' #Sin color

Se pude ver que hay dos variantes para cada color, que son – por decirlo de alguna forma – opaco y brillante. En minúsculas están los opacos, y en mayúsculas los brillantes.

Cada vez que el script escriba algo en pantalla, podremos cambiar el color del texto añadiendo los modificadores respectivos:

echo "Hola, soy texto sin color"

Se puede convertir en

echo -e "${RED}Hola! ${green} soy texto de ${CYAN} colores ${NC}"

Tres consideraciones:

  1. Las variables de los colores van entre llaves. Esto es opcional, y sólo sería obligatorio al principio, para delimitar dónde termina la variable y viene el texto, evitando así un espacio al comienzo de cada línea en pantalla.
  2. El $NC al final, para que al terminar el script la consola no quede con el último color utilizado.
  3. El “-e” del comando “echo” es para que la consola interprete correctamente las secuencias de escape de los colores. Si no se pone con “-e” se verá el código del color en vez de texto coloreado.

Tags: ,

3 Responses to “Coloreando scripts en BASH”

  1. Roberto Bonvallet Says:
    Julio 27th, 2009 at 11:11 am

    Esto es útil no sólo en bash. Cualquier programa que escupa en la consola puede gozar de este mundo de colores. Imprimir salida colorinche puede hacer que la experiencia de debugueo sea más sencilla, a costa de hacerlo un poco menos macho.

  2. Roberto Says:
    Julio 27th, 2009 at 12:48 pm

    También pueden ocupar ccze (disponible en ubuntu con apt-get) por ejemplo:
    tail -f /var/log/messages | ccze

    saludos

  3. Sebastian Says:
    Agosto 5th, 2009 at 10:32 am

    Este truco se puede reutilizar también para python (lo cual queda muy cool para los scripts). Tan facil como:
    red = ‘33[31m’
    green=’33[0;32m’
    yellow=’33[0;33m’
    print green+’Verde,’+yellow+’ amarillo y ‘+red+’rojo’

    (hay que cambiar el \e por 33)

Leave a Reply