miércoles, 28 de julio de 2010

Saber cuando termina una aplicación por consola.

En muchas ocasiones nos vemos en la necesidad de utilizar programas sin interfaz gráfica. En este pequeño artículo les mostraré la manera en que pueden conocer cuando cierta tarea se ha completado.

Pudiera ocurrir que tuviéramos que compilar un programa, "renderizar" un vídeo, o simplemente, utilizamos un gestor de descargas como wget. El gestor de descargas por ejemplo me sirve para estableces una buena comparación. Si yo pusiera a descargar un archivo de varios gigas, me llevaría algo más de tiempo que unos segundos. Cualquier gestor de descargas con interfaz, me mostraría un aviso cuando esta se completase, una notificación. Sin embargo, no sabemos como hacer esto desde la terminal, sosa y fría. Por eso, procederemos a moldearla a nuestro gusto.

Para este caso, haremos que nos muestre notificaciones cuando un programa termine su ejecución:

1.- Desde la propia consola escribimos:

$gedit ~/.bashrc
A continuación, dentro del archivo que se nos abrirá, copiaremos al final el siguiente código:

alias alert_helper='history|tail -n1|sed -e "s/^\s*[0-9]\+\s*//" -e "s/;\s*alert$//"'
alias alert='notify-send -i /usr/share/icons/gnome/32x32/apps/gnome-terminal.png "[$?] $(alert_helper)"'

2.- Nos aseguramos de tener libnotify-bin instalado. Para Ubuntu y derivados:

$sudo apt-get install libnotify-bin

En mandriva me bastó con utilizar lo siguiente:

$su
#urpmi libnotify

3.- Y el paso final. Escribiremos en consola:

$source ~/.bashrc
Con esto ya tenemos lo que ofrecimos, notificaciones cuando terminan nuestras aplicaciones. Probemos con cualquiera, un simple cd o mv.

¿No te funcionó? ¡Claro! No tiene sentido alguno que nos avise de cuando terminan todos los comandos. Sería de utilidad prácticamente nula, por eso si queremos que nuestra aplicación nos informe bastará con poner la terminación "; alert" en nuestras instrucciones. Unos ejemplos donde podremos ver cómo funciona:

$cd; alert

$sleep 5; alert

Espero les sea de utilidad. Fuente: Aquí

No hay comentarios: