annotate-output


A menudo me sorprendo con pequeñas utilidades poco conocidas pero muy interesantes.

Tal es el caso de annotate-output

Instalación de annotate-output

Es una pequeña utilidad que se encuentra en el paquete debian devscripts, por lo que su instalación es tan simple como:

apt-get install devscripts

Para qué sirve

Como su propio nombre indica, pone notas en la salida. Estas notas son la fecha y el tipo de salida utilizada (stdin , stdout o stderr). Por ejemplo:

> ls
appveyor.yml       dodo.py           output/                         setup.cfg
AUTHORS.txt        foo/              python_dateutil-2.2-py2.7.egg/  setup.py*
bower_components/  LICENSE.txt       README.rst                      tests/
bower.json         logo/             requirements-extras.txt         translations/
CHANGES.txt        MANIFEST.in       requirements-tests.txt          venv/
CONTRIBUTING.rst   nikola/           requirements.txt
docs/              Nikola.egg-info/  scripts/

> annotate-output ls
17:07:57 I: Started ls
17:07:57 O: appveyor.yml
17:07:57 O: AUTHORS.txt
17:07:57 O: bower_components
17:07:57 O: bower.json
17:07:57 O: CHANGES.txt
17:07:57 O: CONTRIBUTING.rst
17:07:57 O: docs
17:07:57 O: dodo.py
17:07:57 O: foo
17:07:57 O: LICENSE.txt
17:07:57 O: logo
17:07:57 O: MANIFEST.in
17:07:57 O: nikola
17:07:57 O: Nikola.egg-info
17:07:57 O: output
17:07:57 O: python_dateutil-2.2-py2.7.egg
17:07:57 O: README.rst
17:07:57 O: requirements-extras.txt
17:07:57 O: requirements-tests.txt
17:07:57 O: requirements.txt
17:07:57 O: scripts
17:07:57 O: setup.cfg
17:07:57 O: setup.py
17:07:57 O: tests
17:07:57 O: translations
17:07:57 O: venv
17:07:57 I: Finished with exitcode 0

Como se puede observar, indica la hora y añade una O para la salida, una I para mensajes de información. Además añadiría una E para la salida de error:

> annotate-output ls /foo
17:09:54 I: Started ls /foo
17:09:54 E: ls: no se puede acceder a /foo: No existe el fichero o el directorio
17:09:54 I: Finished with exitcode 2

Por qué me parece tan interesante

En algunos casos puede ser importante cuánto tarda en ejecutar algún paso:

  • Tareas lentas
  • Tareas con mucha salida
  • Tareas en background
  • Salida de cron
  • Mensajes de nuestro entorno de integración contínua (Jenkins, Travis, ...) o ejecuciones de Make en general.

Sabiendo la hora de ejecución podemos inferir muchas cosas: Cuánto tardó en ejecutar cierto paso, la hora de un error, ... O, simplemente, filtrar a posteriori la salida de error con un simple grep.

¿Para qué más sirve?

Siguiendo la filosofía Unix, "pequeñas herramientas que hacen una tarea y la hacen bien", ésta es su utilidad. A parte de poder cambiar el formato de la fecha, no permite hacer nada más.


Comentarios

Comments powered by Disqus