Cómo mostrar la fecha y la hora en la terminal Linux (y usarla en scripts Bash)

Puntos clave
- El comando de fecha en el shell Bash se puede utilizar para mostrar la fecha y hora actuales en varios formatos, lo que permite la personalización.
- Usando el signo "+" y varios códigos de opción, la salida del comando de fecha se puede formatear para incluir información específica como día, mes, año o zona horaria.
- El comando de fecha se puede utilizar en scripts de shell para automatizar tareas como crear directorios con nombres de marca de tiempo o copiar archivos con información de hora específica.
EL date
El comando se encuentra en el shell Bash, que es el shell predeterminado en la mayoría de las distribuciones de Linux e incluso en macOS. Este tutorial le muestra cómo dominar date
en la línea de comando y cómo usarlo en scripts de shell para hacer más que simplemente imprimir la hora.
Cómo ver la fecha, hora y hora en la terminal Linux
Ejecute el date
comando para mostrar esta información. Imprima la fecha y hora actuales de su zona horaria:
date
El formato predeterminado parece un poco tonto. ¿Por qué no se imprime el año después del mes y el día, en lugar de etiquetarse al final, detrás de la zona horaria? No te preocupes: si tienes control sobre el formato de salida que deseas, date
lo entrega con creces. Hay más de 40 opciones a las que puedes cambiar date
para indicarle que formatee su salida exactamente como desee.
Para utilizar cualquiera de las opciones escriba date
un espacio, un signo más +
y la opción que incluye el signo de porcentaje inicial. EL %c
(fecha y hora en la localidad) hace que la fecha y la hora se impriman en el formato normalizado asociado con su localidad. Su idioma lo establece la información geográfica y cultural que proporcionó al instalar el sistema operativo. Las localidades gobiernan aspectos como los símbolos monetarios, los tamaños de papel, las zonas horarias y otras normas culturales.
date +%c
El año aparece ahora en una posición más natural en la producción.
Puedes pasar varias opciones a date
de inmediato. Una secuencia de opciones se denomina cadena de formato. Para ver el nombre del día (%A
), el día del mes (%d
) y el nombre del mes (%B
), utilice este comando:
date +%A%d%B
Funcionó, pero es malo. No hay problema, podemos incluir espacios siempre que incluyamos toda la cadena de formato entre comillas. Tenga en cuenta que el +
sale de las comillas.
date +"%A %d %B"
Puede agregar texto a la cadena de formato, como este:
date +"Today is: %A %d %B"
Desplazarse hacia arriba y hacia abajo por el date
La búsqueda en la página de manual de la opción deseada rápidamente se vuelve tediosa. Hemos dividido las opciones en grupos para ayudarte a encontrar tu camino más fácilmente.
Opciones para mostrar la fecha y la hora
- %C: Imprime la fecha y la hora en formato local, incluida la zona horaria.
Opciones para mostrar la fecha
- %D: Imprime la fecha en formato mm/dd/aa.
- %F: Imprime la fecha en formato aaaa-mm-dd.
- %X: Imprime la fecha en formato local.
Opciones para mostrar el día
- %A: Imprime el nombre del día, abreviado como lunes, martes, miércoles, etc.
- %A: Imprime el nombre completo del día, lunes martes, miércoles, etc.
- %u: Imprime el número del día de la semana, donde lunes=1, martes=2, miércoles=3, etc.
- %w: Imprime el número del día de la semana, donde domingo=0, lunes=1, martes=2, etc.
- %D: Imprime el día del mes, con un cero a la izquierda (01, 02... 09) si es necesario.
- %Y: Imprime el día del mes, con un espacio inicial (' 1', ' 2' ... ' 9') si es necesario. Tenga en cuenta que los apóstrofes no se imprimen.
- %J: Imprime el día del año, con hasta dos ceros a la izquierda, si es necesario.
Opciones para ver la semana
- %U: Imprime el número de semana del año, considerando el domingo como el primer día de la semana. Por ejemplo, la tercera semana del año, la vigésima semana del año, etc.
- %V: Imprime el número de semana ISO del año, considerando el lunes como el primer día de la semana.
- %W: Número de la semana del año, considerando el lunes como primer día de la semana.
Opciones para mostrar el mes
- %B O %H: Imprime el nombre del mes abreviado como enero, febrero, marzo, etc.
- %B: Imprime el nombre completo del mes, enero, febrero, marzo, etc.
- %METRO: Imprime el número del mes, posiblemente precedido por un cero 01, 02, 03... 12.
Opciones para mostrar el año
- %C: Imprime el siglo sin el año. En 2019 imprimirá 20.
- %año: Imprime el año en dos dígitos. en 2019 imprimirá 19.
- %Y: Imprime el año de cuatro dígitos.
Opciones para mostrar la hora
- %T: Imprime la hora en formato HH:MM:SS.
- %R: Imprime la hora y los minutos en formato HH:MM sin segundos, utilizando el reloj de 24 horas.
- %R: imprime la hora según su país, utilizando el reloj de 12 horas y un indicador am o pm.
- %X: Imprime la hora según su ubicación, utilizando el reloj de 24 horas. Presumiblemente. Tenga en cuenta que durante la prueba esta opción funcionó exactamente igual
%r
lo hace, como se muestra a continuación. En una máquina Linux configurada para la configuración regional del Reino Unido y configurada en GMT, imprimió la hora, usando el reloj de 24 horas sin indicador AM o PM, como se esperaba.
Opciones para mostrar la hora
- %H: Imprime la hora 00, 01, 02...23.
- %I: Imprime la hora usando el formato de 12 horas, 00, 01, 02... 12, con un cero a la izquierda si es necesario.
Opciones para ver minutos
- %METRO: imprime los minutos, 01, 02, 03... 59, posiblemente precedidos por un cero.
Opciones para mostrar segundos
- %S: Imprime el número de segundos desde 1970-01-01 00:00:00, el comienzo de la era Unix.
- %S: Imprime segundos, 01, 02, 03... 59, con un cero a la izquierda si es necesario.
- %No: Imprime nanosegundos.
Opciones para ver información de zona horaria
- %z: Imprime la diferencia horaria entre su zona horaria y UTC.
- %: z: Imprime la diferencia horaria entre la zona horaria y UTC, con un : entre las horas y los minutos. Nota la
:
entre%
firmar ez
. - %::z: Imprime la diferencia horaria entre la zona horaria y UTC, con un : entre horas, minutos y segundos. Nota la
::
entre%
firmar ez
. - %Z: Imprime el nombre de la zona horaria en orden alfabético.
- %PAG: Imprime el indicador AM o PM en mayúsculas.
- %PAG: Imprime el indicador am o pm en minúsculas. Tenga en cuenta la extrañeza con estas dos opciones. uno pequeño
p
proporciona salida en mayúsculas, una capitalizaciónP
devuelve salida en minúsculas. - %T: imprime una tarjeta.
- %No: imprime una nueva línea.
Opciones para cambiar otras opciones
Estos modificadores se pueden insertar entre archivos. %
y la letra de opción de otras opciones para cambiar su visualización. Por ejemplo, %-S
eliminaría el cero inicial para los valores de segundos de un solo dígito.
- -: Un solo guión evita el relleno de ceros en valores de un solo dígito.
- _: un guión bajo agrega espacios iniciales para valores de un solo dígito.
- 0: proporciona ceros a la izquierda para valores de un solo dígito.
- ^: Utilice letras mayúsculas si es posible (no todas las opciones respetan este modificador).
- #: Utilice el caso contrario al predeterminado para la opción, si es posible (no todas las opciones respetan este modificador).
Dos trucos más
Para obtener la hora de la última modificación de un archivo, utilice el archivo -r
Opción (referencia). Tenga en cuenta que esto utiliza un -
(guion) en lugar de un %
firmar y no requiere archivo +
firmar. Pruebe este comando en su carpeta de inicio:
date -r .bashrc
La configuración TZ le permite cambiar la zona horaria durante la duración de un solo comando.
TZ=GMT date +%c
Usar fecha en scripts
Habilitar un script de shell Bash para imprimir la hora y la fecha es trivial. Cree un archivo de texto con el siguiente contenido y guárdelo como gd.sh
.
#!/bin/bashTODAY=$(date +"Today is %A, %d of %B")
TIMENOW=$(date +"The local time is %r")
TIME_UK=$(TZ=BST date +"The time in the UK is %r")
echo $TODAY
echo $TIMENOW
echo $TIME_UK
Escriba el siguiente comando para establecer los permisos de ejecución y hacer que el script sea ejecutable.
chmod +x gd.sh
Ejecute el script con este comando:
./gd.sh
Podemos usar el comando de fecha para proporcionar una marca de tiempo. El script que se muestra creará un directorio con la marca de tiempo como nombre. Luego copiará todos los archivos de texto de la carpeta actual en ella. Al ejecutar este script periódicamente, podemos tomar una instantánea de nuestros archivos de texto. Con el tiempo iremos creando una serie de carpetas con diferentes versiones de nuestros archivos de texto dentro de ellas.
Tenga en cuenta que este no es un sistema de respaldo sólido; tiene fines ilustrativos únicamente.
Cree un archivo de texto con el siguiente contenido y guárdelo como snapshot.sh.
#!/bin/bash
date_stamp=$(date +"%F-%H-%M-%S")
mkdir "$date_stamp"
cp *.txt "$date_stamp"
echo "Text files copied to directory: "$date_stamp
Escriba el siguiente comando para establecer los permisos de ejecución y hacer que el script sea ejecutable.
chmod +x snapshot.sh
Ejecute el script con este comando:
./snapshot.sh
Verás que se ha creado un directorio. Su nombre es la fecha y hora en que se ejecutó el script. Dentro de ese directorio hay copias de los archivos de texto.
Con algo de reflexión y creatividad, incluso humilde date
el comando se puede utilizar productivamente.