Listando en el terminal con color en Ubuntu y un poquito de bash

Introducción

Al hablar el otro día sobre Terra (que se ha convertido en el emulador por defecto), salió a colación el colorido de mi terminal. Estoy tan acostumbrado a él, que muchas veces ni me doy cuenta, pero lo cierto es que es de gran ayuda para los que estamos mucho tiempo trabajando con él, amén de darle un toque mas alegra al terminal.

Existen diferentes maneras de conseguir el resultado que se puede ver en la captura de pantalla que ves mas abajo, algunas mas o menos laboriosas de implementar. Trataré de detallar algunas de ellas, además de indicaros por cual me he decantado.

0046_root@ubuntu-raring: -home-atareao-Documentos-blog.png

Coloreando, coloreando…

Aunque soy consciente, de que con el tema del uso del terminal me repito, y no me gustaría ser excesivamente cansino en este asunto, quiero romper una lanza (o todo un arsenal de ellas) en favor del terminal. Es una herramienta tremendamente poderosa, y que ayuda a ser mas productivo y ágil, sobre todo en lo referente a la gestión de archivos, y el uso de scripts para realizar faenas repetitivas, como puede ser la sincronización de archivos por ftp de forma desasistida, sobre la que escribiré en algún artículo posterior.

Aunque lo que vas a ver a continuación, en principio, no tiene que ver mucho con la productividad, sin lugar a dudas, ayuda en tu uso diario del terminal. Para ello vamos a por una parte personalizar el «prompt» y por otra ver la salida de archivos tras una ejecución de «ls» con colores, para poder identificar de un solo vistazo las diferentes archivos.

Personalizando el prompt

El primer paso será colorear el prompt, que para aquellos que no saben a que me refiero, indicarles que es la parte de la línea de comandos a la izquierda, que no podemos modificar, y que nos da alguna información (dependiendo de si está programada o no, claro):

0046_root@ubuntu-raring: -home-atareao-Documentos-blog.png

La parte de la izquierda se puede modificar, mas o menos fácilmente editando el archivo «.bashrc» que se encuentra en nuestro directorio de inicio, y añadiendo una serie de caracteres precedidos por una barra invertida, que tienen el siguiente significado:

\d : la fecha en formato (dia mes año)
\D{format} : lo mismo que el anterior pero formateado
\h : El nombre del equipo hasta el primer punto
\H : El nombre completo del equipo
\j : El numero de trabajos gestionados por el shell
\n : una linea nueva
\r : un retorno de carro
\t : la hora actal en formato de 24 hHH:MM:SS
\T : la hora actual en formato de 12 horas HH:MM:SS
\@ : la hora actual en formato de 12 horas HH:MM am/pm
\A : la hora actual en formato de 24 horas HH:MM
\u : el nombre de usuario
\v : la versión de bash
\V : la versión de bash seguida por el nivel de patch
\w : el directorio actual con $HOME abreviado como ~
\! : el numero histórico de este comando (esto es muy útil para volver a utilizarlo rápidamente)
\# : el número de comando de este comando
\\ : a backslash
\[ : comienza una secuencia de caracteres no imprimibles
\] : termina una secuencia de caracteres no impriomibles

Algunos ejemplos:

atareao@aao: ~ $ PS1="[\d \t \u@\h:\w ] $ "
[mar mar 12 12:09:12 atareao@aao:~ ] $ PS1="[\d \t \u@\H:\w ] $ "
[mar mar 12 12:10:00 atareao@aao:~ ] $ PS1="\d \t - \u@\H(\j):\w $ "
mar mar 12 12:11:44 - atareao@aao(0):~ $ nano
mar mar 12 12:12:01 - atareao@aao(0):~ $ PS1="\!-\d \t - \u@\H(\j):\w $ "
1530-mar mar 12 12:12:29 - atareao@aao(0):~ $ 
1530-mar mar 12 12:12:31 - atareao@aao(0):~ $ ls
1531-mar mar 12 12:12:33 - atareao@aao(0):~ $ PS1="\!-\d \t - \u@\H(\j):\W $ "
1532-mar mar 12 12:12:47 - atareao@aao(0):~ $ cd Documentos/
1533-mar mar 12 12:12:51 - atareao@aao(0):Documentos $ PS1="\!-\d \t - \u@\H(\j):\w $ "
1534-mar mar 12 12:12:56 - atareao@aao(0):~/Documentos $ !1530
ls
1535-mar mar 12 12:13:09 - atareao@aao(0):~/Documentos $ PS1="\!-\d \t - \u@\A(\j):\w $ "
1536-mar mar 12 12:13:30 - atareao@12:13(0):~/Documentos $ PS1="\!-\d \H - \u@\h(\j):\w $ "
1537-mar mar 12 aao - atareao@aao(0):~/Documentos $ PS1="\!-\d \A - \u@\h(\j):\w $ "
1538-mar mar 12 12:14 - atareao@aao(0):~/Documentos $

El siguiente paso, es añadir algunos colores, para darle algo de alegría al terminal. Para ello, solo tenemos que rodear la parte a cambiar con algo similar a esto:

para empezar:

\[\e[0;32m\]

a continuación ponemos la parte que queremos colorear, y para terminar:

\[\e[m\]

Donde el color es el definido por la parte 0;32m, en este caso particular, verde. Pero las posibilidades no se restringen exclusivamente al color del texto, sino también al fondo, puedes ver la siguiente imagen, extraída de arwin.net, para que te hagas una idea:

bash_colors.png

Una interesante composición, es que cada una de las partes del prompt venga en distinto color, e incluso que dependiendo del usuario también cambie, aunque esto, básicamente me refiero al administrador, y es tan sencillo, como cambiar su configuración.

Por ejemplo, con el siguiente código:

 PS1="\[\e[0;30m\]\!-\[\e[0;31m\]\d \[\e[0;32m\]\A - \[\e[0;33m\]\u@\[\e[0;34m\]\h\[\e[0;35m\](\j):\[\e[0;32m\]\w $\[\e[m\] "

obtendríamos un resultado como éste:

Captura de pantalla - 120313 - 13:36:10.png

Para que esto se quede fijo en tu configuración, solo tienes que editar el archivo «.bashrc» y cambiar esa expresión.

Coloreando la salida de «ls»

Esta es la parte mas sencilla. Para hacer esto, al igual, que en el caso anterior, solo tienes que editar el archivo «~/.bashrc» y añadir un alias a «ls»:

alias ls='ls --color=always'

Conclusiones

Con esto ya tienes perfectamente personalizado tu terminal. Esta configuración, lo suyo es que te la lleves de máquina a máquina, para que siempre te sientas como en casa. Inicialmente, me hacía mucha gracia encontrarme mi terminal en el típico fondo negro con letras fosforescentes, sin embargo, he ido cambiado mis preferencias en aras a la productividad.

Más información | Mundo geek, ls, nixCraft

1 comentario en “Listando en el terminal con color en Ubuntu y un poquito de bash

Deja un comentario

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