Hacer más colorida la terminal en Windows

En el artículo anterior, hable de cómo Hacer más colorida la terminal en Linux, ahora veremos cómo hacer lo mismo en Windows.

Durante la década de 1980, los ordenadores estaban aún en incipiente desarrollo y quienes trabajábamos con ellos nos encontrábamos con limitaciones que debíamos superar con grandes dosis de imaginación.

No es ningún secreto, el que Windows está basado en DOS y, por tanto, ha heredado muchas de sus características y funciones; si bien es cierto que son entornos totalmente distintos y que las recientes versiones de Windows sólo guardan retales del DOS, es más, si no eres un programador o realmente un “techie”, no necesitarás para nada, usar los componentes heredados del DOS.

Un poco de historia.

El sistema DOS, era un sistema operativo básico, monotarea y basado en texto (no tenía entorno gráfico) y como sabes, para un desarrollador, una de las limitaciones más frecuente, era el que las terminales de los ordenadores e incluso las pantallas de los ordenadores personales, eran monocromáticas, por lo que hacer que ciertos textos o ciertas partes de la pantalla resaltasen, no era tan sencillo como aplicar un color distinto. En muchos casos, los desarrolladores usábamos un conjunto de instrucciones que, aunque ya existía en los años 70, no era ampliamente conocido y, que nos permitía cambiar el tamaño de las letras, posicionar el cursor de forma arbitraria, escribir con los caracteres invertidos o subrayar párrafos enteros, por citar algunos ejemplos.

En la década de 1990, aparecieron los primeros terminales en color, lo que nos facilitaba la vida, pero aún había que trabajar con texto, los terminales gráficos y el software funcionando en modo gráfico, no aparecieron hasta finales de la década, concretamente, el Windows 95 apareció en 1994.

El MS-DOS 1.x no soportaba ningún tipo de código de escape, sólo algunos pocos caracteres de control control eran interpretados por la BIOS subyacente (caracteres usados, explicación en inglés BEL, CR, LF, BS), esto hacía casi imposible realizar alguna aplicación que contase con el control completo de la pantalla (sólo haciendo subrogramas en ensamblador que llamasen a las funciones de la BIOS, era posible hacer algo).

Con la aparición del DOS 2.0, se introdujo la capacidad de añadir dispositivos de control (device driver) para manejar las secuencias de escape ANSI y otras parecidas.
Esta forma de trabajar se extendió durante largo tiempo, haciendo necesario trabajar con lenguajes de bajo nivel o desarrollando manejadores que hacían la tarea ardua y el rendimiento del equipo se veía afectado. Incluso tras la aparición de Windows 9x y hasta el Windows Me, se usaban programas puente como el ANSI.SYS.

Este sistema de interpretación se ha usado en todas las versiones de Windows, en las que el Win32 no ha dado soporte a las secuencias de escape ANSI, hasta la aparición de Windows 10 (que hace uso del "Threshold 2")

Lo que podemos hacer.

En el entorno de DOS (emulado en Windows cuando activamos una consola, ejecutando ”cmd” o invocando el “Símbolo de sistema”) el prompt está manejado por una variable del sistema a la que podemos acceder mediante el comando “prompt”. Para conocer el contenido de la variable prompt, debemos introducir:


C:\>set prompt

Si al ejecutar el comando, nos devuelve el mensaje: “Variable de entorno prompt no definida”, es indicación de que se está usando el prompt por defecto y, la variable está vacía. En caso contrario, nos mostrará el contenido de la variable.

Alterando el contenido de la variable de entorno, alteramos la presentación y, entre otras cosas, podemos alterar el color de los distintos segmentos que componen el “prompt”. La forma de presentar cambios en el color, es cambiando el color del texto que se va a presentar y, ese color, estará determinado por la secuencia de escape de acuerdo al código escape ANSI. Si bien el código exacto es una variación del estándar ANSI, los colores son los mismos, de acuerdo con la siguiente tabla:

Tabla de colores
Intensidad 0 1 2 3 4 5 6 7
Normal Negro Rojo Verde Amarillo Azul Magenta Cian Blanco
Claro Negro Rojo Verde Amarillo Azul Magenta Cian Blanco

Dando forma a la variable.

Además del color del texto, la variable prompt está compuesta por diferentes secciones y, de acuerdo con el manual de DOS, el prompt puede ser una o más de las secciones señaladas y, está compuesta por las secciones delimitadas por los caracteres especiales. Las secciones posibles son:

$A & (Ampersand)
$B | (barra vertical)
$C ( (paréntesis izquierdo)
$D Fecha actual
$E Código escape (código ASCII 27)
$F ) (Paréntesis derecho)
$G > (signo mayor que)
$H Retroceso (borra el carácter previo)
$L < (signo de menor que
$N el disco actual
$P el disco actual y el camino
$Q = (signo de igual)
$S (espacio en blanco)
$T Hora actual
$V Versión de Windows
$_ Retorno de Carro y Salto de Línea
$$ $ (signo de dólar)

Por ejemplo, podemos hacer un cambio en la variable, entrando la secuencia:

prompt $P$G

y comparar el prompt que teníamos antes con el que aparece después de introducir el comando, como en el ejemplo:


C:\prompt $P$G
C:\Users\justme>

Ahora, vayamos un poco más allá y cambiemos el color de la unidad de disco y del camino.

De echo, podemos cambiar tres aspectos de cada sección, de acuerdo a la siguiente tabla:

Text Format Foreground (text) color Background color
0: normal text 30: Black 40: Black
1: bold 31: Red 41: Red
4: Underlined text 32: Green 42: Green
33: Yellow 43: Yellow
34: Blue 44: Blue
35: Purple 45: Purple
36: Cyan 46: Cyan
37: White 47: White

Vamos a usar el comando (carácter especial) $E[ al comienzo y el carácter m al finalizar, indicando que es un esquema de color. Los valores de formato, en la secuencia fondo, formato, color, deben estar separados por coma (o punto y coma si nuestro sistema tiene localización española). Por ejemplo, el siguiente texto introducido en la variable prompt, hará que se presente en verde y azul, mientras que los siguientes comandos serán introducidos en blanco:


prompt $E[1;32m$T $D$E[1;34m$P$G$E[0;37m

Si queremos que estos bonitos cambios permanezcan es decir, que aparezcan la próxima vez que abramos una terminal, tenemos que hacer más cambios, ya que estos valores desaparecerán en cuanto se acabe la sesión, cuando cerremos la terminal.

Haciendo permanentes los cambios.

Desde la primera versión de DOS y hasta la versión de Windows NT, cuando queríamos que la máquina realizara tareas de forma automática, se editaba el archivo autoexec.bat situado en el directorio raíz del disco de arranque. A partir del Windows NT, este archivo quedó obsoleto y se usaba en su lugar el autoexec.nt situado en el directorio %SystemRoot%\system32. La gran diferencia estriba en que este último, no se ejecuta cada vez que se arranca el ordenador, sino cada vez que se abre el entorno de texto (la terminal).

Con la aparición de Windows 10, no existe soporte oficial de las funciones de DOS, la manera de realizar el cambio permanente, es un tanto intrincada:

  1. Pulsa sobre el botón derecho del ratón, cuando el cursor esté sobre el botón de Inicio.
  2. Selecciona y pulsa sobre “Sistema”.
  3. En la ventana que aparece, ve al menú de la izquierda y selecciona “Configuración avanzada del sistema”
  4. En la ventana que aparece, selecciona y pincha sobre el botón de más abajo: “Variables de entorno”.
  5. En la ventana que aparece, encontrarás en la parte inferior, las “Variables del sistema”
  6. Si existe la variable PROMPT en la lista, seleccionala y pulsa el botón “Editar”; si no existe, vamos al botón “Nueva” para crear la variable.
  7. En la pantalla aparecerá una nueva ventana con título: “Editar la variable del sistema”, en ella introduce los valores: “Nombre de la variable” – PROMPT y “Valor de la variable” el valor que queramos asignarle.
  8. Pulsa en aceptar, en las tres ventanas y, finalmente, tendrás el prompt cambiado cada vez que abras una nueva terminal.
Anuncios

Déjame un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s