El comando date de GNU

Veamos lo básico de este sencillo comando parte de las herramientas coreutils del sistema GNU, disponible en sistemas GNU/Linux

El comando date es una de las utilidades de coreutils, las herramientas básicas del sistema GNU. Al ejecutarlo en una terminal, simplemente nos muestra la fecha (el símbolo $ indica que el comando lo ejecuta un usuario normal sin privilegios de root):

$ date             
jue ago 26 18:49:12 CEST 2021

Pero podemos adaptarlo a nuestros gustos, podemos integrarlo en scripts y también esconde alguna funcionalidad curiosa que quizás no conocías.

Con la información predeterminada que muestra es más que suficiente, pero podemos hacerla un poco más «amigable» añadiendo algo de texto a la salida del comando y jugando con los modificadores del propio comando.

Por ejemplo podemos añadir algo como esto al comando date:

$ date +"Hoy es %A, %d de %B de %Y %nEsta es la semana %V y han pasado %j días de este año %nSon las %R %:z %Z"
Hoy es jueves, 26 de agosto de 2021 
Esta es la semana 34 y han pasado 238 días de este año 
Son las 18:55 +02:00 CEST

Con el símbolo + y entre comillas podemos encerrar texto que queramos que se muestre. Como véis he modificado el formato propio mostrado para que muestre otras secuencias. En concreto he usado:

  • %A el nombre local completo de la semana (p. ej., Domingo)
  • %d el día del mes (p. ej., 01)
  • %B el nombre local completo del mes (p. ej. Enero)
  • %Y el año
  • %n un salto de línea
  • %V el número ISO de la semana del año con Lunes como primer día de la semana (01..53)
  • %j el día del año (001..366)
  • %R hora y minutos en formato 24 horas
  • %:z zona horaria numérica en formato +hh:mm (p. ej., -04:00)
  • %Z abreviatura alfabética de la zona horaria (p. ej., EDT)

Pero hay muchas otras secuencias que puedes utilizar para mostrar lo que desees. Simplemente ejecuta date --help para verlas todas.

Se me ocurre que podíamos crear un alias que se llamase «hoy» y ejecutase el comando date con ese formato para saber qué día y hora es.

$ alias hoy="date +\"Hoy es %A, %d de %B de %Y %nEsta es la semana %V y han pasado %j días de este año %nSon las %R %:z %Z\""

Cabe destacar que hay que «escapar» las comillas propias del comando date anteponiendo la barra invertida \

Ahora ya solo ejecutando hoy nos mostrará la fecha y hora en ese formato.

El comando date también puede mostrar el tiempo Unix (o Epoch time) la cantidad de segundos transcurridos desde el 1-1-1970

$ date +%s
1629998692

Y también podemos convertir esos segundos en una fecha, anteponiéndolos con el símbolo @

$ date -d "@1629998692"
jue ago 26 19:24:52 CEST 2021

Con date también podemos «viajar» al pasado y al futuro. Por ejemplo, podemos saber qué día de la semana era cuando nacimos, o qué día de la semana será dentro de un año (por ejemplo) gracias a la opción -d

Para saber el día de la semana que fue cuando nacimos (o cualquier otra fecha) ejecutaremos la consulta en formato año-mes-día:

$ date -d "1991-8-25"
dom ago 25 00:00:00 CEST 1991

Con esto sabemos que cuando Linus Torvalds anunció su pequeño proyecto a la lista de correo de Minix era un domingo de hace 30 años.

¿Y qué fecha será dentro de dos años?

$ date -d "2 years"  
sáb ago 26 19:21:45 CEST 2023

O tal día como hoy hace dos años. Podemos utilizar seconds, minutes, days, months, years.

$ date -d "2 years ago"
lun ago 26 19:23:28 CEST 2019

Y ya por último, también podemos saber la fecha que fue modificado un archivo gracias a la opción -r

$ date -r /var/log/messages
jue ago 26 19:23:09 CEST 2021

Y con esto creo que es suficiente para aprender lo básico del comando, podéis echar un vistazo a la ayuda propia del comando donde encontraréis estos y más opciones.

¿Te ha parecido interesante? ¿Te gustarían más artículos similares? Comparte tu opinión en los comentarios.

4 comentarios sobre “El comando date de GNU

  1. Hola Victor, …aunque a veces no pueda contestar, muchas cosas han cambiado en los últimos meses y en lo personal y laboral he tenido que hacer reajustes, pero te sigo leyendo.
    Tengo muchos «alias» y ahora creo voy a agregar un par de ellos más, gracias a tu post.
    Gracias por siempre compartir tus conocimientos.

    Fuera del tema, en lo posible actualizame con el futuro de «ForoSUSE» de verdad se extraña y hay par de cosillas por ahi que me gustaría consultar.

    Salud y Suerte desde NY.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.