Date
El comando Date nos ofrece muchas más posibilidades que darnos la fecha y la hora actuales, como por ejemplo:
Para calcular fechas relativas podemos sumar o restar a la fecha actual (por defecto) o a una fecha concreta tiempo expresado en palabras en inglés
# actual 2018-03-26
date +%Y-%m-%d --date="-1 year -1 day"
2017-03-25
# obtener fecha 1 año y 2 días anterior al año actual (2018) y mes 01 día 01
date +%Y-%m-%d --date="$(date +%Y-01-01) -1 year -1 day"
2016-12-30
# actual 2018-03-26, mostrar ayer
date +%Y-%m-%d --date="yesterday"
2018-03-25
date --date='1970-01-01 00:00:01' +%s
1
date --date='2000-01-01 00:00:01 UTC' +%s
946684800
date -d '2009-11-02' +%A
Lunes
date -d '1970-01-01 1 sec' +"%Y-%m-%d %T %z"
1970-01-01 00:00:01 +0100
date -d '1970-01-01 946684800 sec' +"%Y-%m-%d %T %z"
2000-01-01 00:00:00 +0000
Para convertir segundos (por ejemplo timestamp) a un formato tipo HH:MM:SS (horas:minutos:segundos) podemos hacerlo:
date -d '1970-01-01 SEGUNDOS sec' +"%H:%M:%S"
Debemos sustituir SEGUNDOS por el número de segundos a convertir, por ejemplo, para convertir 73180 segundos:
date -d '1970-01-01 73180 sec' +"%H:%M:%S"
20:19:40
Cuidado con los ceros delante de las fechas. Por ejemplo si te encuentras con este error: current month is 08 it gives me this error. value too great for base (error token is "08"), revisa la forma de obtener las fechas. (NOTA: lo del guión es válido para cualquier parámetro de fecha y hora).
date "+%-m"
9
date "+%m"
09