Mostrando entradas con la etiqueta tools. Mostrar todas las entradas
Mostrando entradas con la etiqueta tools. Mostrar todas las entradas

Bash debug/failure

Cuando realizo scripts en Bash que son bastante complicados y deseo ver muy bien lo que estan haciendo, suelo crear una funciona llamada debug tal que:

debug () {
    if [ ${DEBUG} -eq 0 ]; then
        echo "[DEBUG] ${1}" 
        return 0
    else
        eval "${1}" > /dev/null 2>&1
        return $?
    fi
}

Por lo que en lugar de hacer las llamadas directamente, se utiliza esto:

debug "mv ${old} ${new}"

Si ejecutamos el script con la variable DEBUG=0 entonces, en lugar de ejecutar el comando, aparecerá el mensaje de debug con el comando. El mayor problema de esto y que se tiene que tener muy en cuenta, es que con esta función tambien podemos incluir comentarios como:

debug "Vamos a mover el directorio"

Estos comentarios no nos traen problemas ya que eval intentará ejecutar Vamos como si fuera un comando y fallaría sin problemas, pero cuidado con estos comentarios.

Otra función que está en mi "Toolbox" es failure:

failure () {
    if [ ${1} -ne 0 ]; then
        echo "[FAIL] (${1}): ${2}"
        exit ${1}
    fi
}

La utilizamos después de ejecutar cualquier comando:

failure $? "Failed to mkdir ${archive_dir}${2}"

La función recibe el código de salida del comando anterior y muestra el mensaje que deseamos en caso de haber fallado. En caso de fallar, devuelve el código de error del comando como el código de error de nuestro script. Tambien podemos utilizarla para resolver algún otro test:

if [ -z "${1}" ] ; then
     failure 1 "No existe el directorio ${1}"
fi


Las dos funciones pueden ser utilizadas en conjunto:

debug "mkdir ${archive_dir}${2}"
failure $? "Failed to mkdir ${archive_dir}${2}"

Además, las ventajas de estas dos funciones es que podemos escribir en un log sin modificar todas nuestras lineas, podemos añadir colores y modificar el formato de salida en un solo lugar y funcionan bastante bien.

My Tools of the Trade

Como todo buen artesano, todos tenemos nuestras herramientas preferidas a las hora de trabajar, siguiendo el ejemplo de éste blog que me ha dado la idea y ya habiendo terminado por hoy con la versión GTK de mcm, voy a continuar éste meme:
Hardware:
  • En casa prefiero utilizar mi portátil Thinkpad T42 que ya tiene sus años pero sigue funcionando de maravilla gracias a Ubuntu 8.10
  • En el trabajo, un HP Pentium IV algo antiguo pero gracias a Ubuntu, funciona muy bien. Con una pantalla de 17''. En unos dias nos los van a cambiar por unos mejores con pantallas de 22''. Que ganas!!!

Software:
  • Ubuntu Linux Intrepid Ibex.
  • Gnome Terminal siempre está abierto, deberia añadirlo al inicio de sesión de GNOME.
  • Firefox tambien deberia iniciarse con la sesión.
    • Echofon (Twitter)
    • Download Status Bar
    • GMarks
    • NoScripts
  • VIM para todo lo que no sea Java.
  • Eclipse para todo lo que sea Java.
  • SQuirreL SQL Client para todo lo que sea BBDD.
  • DIA para cuando necesito abordar un problema de forma gráfica.
  • Evolution para mis correos.
  • Gaim
  • Sin SSH el mundo no sería lo que es :)
  • Finalmente, y no por echarme flores, cada vez utilizo más y más mcm, que además si falla en algo, sé arreglarlo. De hecho he añadido la opción de abrir una consola local.
Utilizo muchas otras, pero diariamente, estas son las herramientas que siempre se encuentran abiertas en mis escritorios virtuales.