martes, 8 de julio de 2008

Cómo obtener la fecha de ayer en Unix

Esta es una tarea sencilla en Linux. Para obtener el día anterior simplemente usamos la función date:
date --date='1 day ago'
Esta funcionalidad tiene varias formas que flexibilizan la tarea de obtener una fecha relativa del pasado o futuro. Sólo basta dar una mirada a la documentación del man.

El problema ocurre si usamos Sun Solaris: este sistema operativo no tiene una modalidad similar para date. Es frustrante para un programador casual como yo, que algo tan sencillo no esté implementado en el sistema operativo.
He visto algunos foros en la web donde se pueden encontrar diversos Shell scripts para calcular el día anterior dependiendo de si el mes tiene 30 o 31 dias, si es febrero, si es año bisiesto... y la verdad que la idea de tanta complejidad para algo tan simple no me satisface.

Una solución directa y fácil de obtener el dia anterior en Solaris es la siguiente: agendar en el programa crontab (o scheduler unix de preferencia) a las 23:59, un simple script que escriba la hora actual en un archivo:
#/bin/ksh
date > ayer.txt

Listo!
Ahora nuestros scripts pueden acceder en forma simple a la fecha de ayer.

Vea también:
Limpieza de archivos en Unix
Comandos útiles para Unix Shell
Cómo verificar archivos y directorios en Shell

No hay comentarios: