
Cuando comencé a escribir scripts bash, me di cuenta de que una de las cosas que suelo hacer con cada script es la fecha y la hora. He hecho muchas cosas como nombrar archivos/directorios con fechas, obtener resultados de API, convertir valores de época a fecha/hora adecuada para la aplicación, manipular columnas de fecha en archivos CSV, etc. Si es un principiante en las secuencias de comandos de Bash, este artículo lo ayudará a comprender cómo usar el comando de fecha en las secuencias de comandos de Bash, cómo usar el comando de fecha en las secuencias de comandos de shell para trabajar con fechas y horas, cómo manipularlas en Linux y hacer varios cosas con eso
Debe tener una comprensión básica de cómo configurar la fecha y la hora del sistema. Esta parte la maneja principalmente el administrador del servidor en su trabajo.
Sin embargo, si usted es un usuario individual y usa Linux en su computadora personal, entonces debe saber cómo configurar la fecha y la hora, cómo sincronizarlas y cómo modificarlas.
Linux usa dos relojes para mantener el tiempo sincronizado.
- Reloj en tiempo real – Este es un reloj integrado en la placa del sistema que funcionará incluso si apaga la máquina.
- reloj del sistema – Esto será manejado por el kernel de Linux y el kernel obtendrá la hora inicial del reloj en tiempo real durante el arranque del sistema.
No pasaré por el proceso de establecer la fecha y la hora, ese es un tema aparte para discutir.Comencemos a trabajar en la parte central de este artículo para entender cómo usar date
Comandos en Bash Scripts en Linux.
consigue ayuda
Primero, puede verificar la ubicación binaria de date
Ordene ejecutando el siguiente comando.
$ which date /usr/bin/date
Esta date
El comando no es un shell incorporado, sino un programa externo.Puedes hacer esto ejecutando type
Pedido.
$ type -a date date is /usr/bin/date date is /bin/date
Hay tantas opciones con las que jugar que es imposible recordarlo todo, y ahí es donde la ayuda y las páginas man resultan útiles.
Ejecute el siguiente comando para acceder a la página del manual date
Pedido.
$ man date
Ejecute el siguiente comando para acceder a los mensajes de ayuda.
$ date --help
Imprimir la fecha y hora actual
Encienda su terminal y simplemente ejecute date
Pedido. Obtendrá la fecha actual junto con la hora y la zona horaria.En mi caso he puesto la zona horaria a sí durante la instalación de mi sistema operativo.
$ date Sunday 13 February 2022 11:27:17 AM IST
Tú también puedes UTC uso de la zona horaria -u
bandera.
$ date -u Sunday 13 February 2022 05:57:36 AM UTC
conversión de zona horaria
puedes obtener la salida date
Ejecute comandos en diferentes zonas horarias configurando variables de entorno Tai ChiHe configurado TZ en Moscú y Singapur La zona horaria en el siguiente ejemplo.
$ Z="Europe/Moscow" date
Sunday 13 February 2022 08:59:03 AM MSK
$ TZ="Asia/Singapore" date
Sunday 13 February 2022 01:59:37 PM +08
Puede hacer esto ejecutando «timedatectl
» Pedido.
$ timedatectl list-timezones
$ timedatectl list-timezones | grep -i singapore
Asia/Singapore
Singapore
$ timedatectl list-timezones | grep -i moscow
Europe/Moscow
Última hora de modificación del archivo
Usualmente, usamos stat
comando para comprobar la hora de modificación de un archivo.también verifique date
uso de comandos -r
bandera.
$ stat ~/.bashrc File: /home/karthick/.bashrc Size: 4342 Blocks: 16 IO Block: 4096 regular file Device: 806h/2054d Inode: 27787278 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/karthick) Gid: ( 1000/karthick) Access: 2022-02-13 09:06:45.713721080 +0530 Modify: 2022-02-11 20:18:52.485178931 +0530 Change: 2022-02-11 20:18:52.485178931 +0530 Birth: -
$ date -r ~/.bashrc Friday 11 February 2022 08:18:52 PM IST
puedes ver stat
El formato de salida del comando es diferente de date
comando, pero ambos tienen el mismo propósito.
diferentes opciones de formato
Esta date
El comando admite opciones de formato con las que puede formatear su date
La salida del comando está en el formato que desee, o solo puede obtener valores específicos de la salida.
Abierto date
La página de manual para el comando y busque la sección que se muestra en la imagen a continuación.
Hay muchas opciones de formato, pero no todas son útiles. Veremos algunas opciones de formato importantes y veremos cómo funciona.
por defecto, date
El comando mostrará la fecha y la hora. ¿Qué sucede si solo desea imprimir la fecha o la hora?
$ date
Sunday 13 February 2022 11:27:17 AM IST
Para obtener solo la fecha que puede usar %F
firmar o %D
bandera.
$ date +%F
2021-11-16
$ date +%D
02/13/22
Cuando usa la bandera del formateador, debe prefijarla con +
Como hice en el ejemplo anterior.
- salida de
%F
el logotipo estará en AAAA-MM-DD Formato. - salida de
%D
el logotipo estará en mes día año Formato.
Puede obtener el día, el mes y el año individualmente y crear su propia salida de formato nuevo.
$ date +%Y
2022
$ date +%m
02
$ date +%d
13
Para crear su propia salida con formato, simplemente combine todas las banderas que se muestran a continuación.
$ date +%Y_%m_%d
2022_02_13
Similar a las fechas, también puede usar %r
(reloj de 12 horas) o %T
(formato de 24 horas) firmar.
$ date +%r # 12 hour format
11:24:12 PM IST
$ date +%T # 24 hour format
23:24:11
Puede obtener horas, minutos, segundos individualmente y crear su propia salida formateada.
$ date +%H
12
$ date +%M
24
$ date +%S
03
Combine todas las banderas anteriores y cree una salida personalizada.
$ date +%H_%M_%S
12_26_53
Ahora, ¿dónde ayudan estas opciones de formato personalizado? Para mí, cuando creo cualquier archivo como parte de un script, lo nombro con la fecha de hoy. Así que es útil para mí mirarlo cuando lo necesito.
Hasta ahora, hemos visto cómo las fechas y las horas se manejan individualmente. A veces, es posible que desee mostrar tanto la fecha como la hora. En este caso, puede combinar la fecha y la hora como se muestra a continuación, o crear su propia salida con formato.
$ date "+%F %r"
2021-11-16 11:29:06 PM IST
Ejecute el script solo en días específicos
En algunos casos, es posible que solo desee ejecutar el script en un determinado día de la semana.Por ejemplo, si quiero que mi script solo se ejecute los viernes, entonces puedo usar %A
(viernes) o %a
(Viernes) está marcado y la lógica se escribe en consecuencia.
if [[ $(date +%A) = Friday ]] then echo "Running the code" else echo "Today is not Friday, Exiting the script" fi OUTPUT: Today is not Friday, Exiting the script
Hay más opciones de formato disponibles. Vea las páginas del manual y navegue por ellas.
almacenar salida a variable
Al crear secuencias de comandos, es mejor almacenar date
comando a una variable y use esa variable en el script. Uno de esos casos es crear un nombre de archivo con fecha y hora.
Eche un vistazo al ejemplo a continuación, la fecha de hoy se almacenará en una variable TDY
Lo mismo se usa para crear nombres de archivos»disk_usage_${TDY}.txt
«almacenará»df -h
» Pedido.
$ TDY=$(date +%F)
$ df -h > ~/disk_usage_${TDY}.txt
$ ls -l *.txt -rw-rw-r-- 1 karthick karthick 474 Feb 13 23:40 disk_usage_2022-02-13.txt
$ cat disk_usage_2022-02-13.txt Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 154M 1.5G 10% /run /dev/sda7 93G 27G 61G 31% / tmpfs 7.8G 82M 7.7G 2% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup /dev/sda9 261G 130G 118G 53% /nextdrive /dev/sda6 348G 110G 221G 34% /home /dev/sda5 2.0G 234M 1.8G 12% /boot/efi tmpfs 1.6G 180K 1.6G 1% /run/user/1000
usar -d
o --date
bandera
Esta es una de mis grandes características favoritas. date
Pedido.Puede pasar cadenas como parámetros a -d
o --date
bandera y obtendrá la salida en el formato predeterminado.
Eche un vistazo al ejemplo a continuación. He pasado el parámetro de cadena como «today
«, «yesterday
«, «tomorrow
«, «last Thursday
«, «Today (+,-) 20 years
«Correcto --date
bandera. El comando Fecha interpretará estas cadenas y convertirá la salida a su formato predeterminado.
$ date --date "Today"
Sunday 13 February 2022 01:01:26 PM IST
$ date --date "now"
Sunday 13 February 2022 01:01:34 PM IST
$ date --date "yesterday"
Saturday 12 February 2022 01:01:39 PM IST
$ date --date "Tomorrow"
Monday 14 February 2022 01:01:45 PM IST
$ date --date "Last Thursday"
Thursday 10 February 2022 12:00:00 AM IST
$ date --date "Today - 20 years"
Wednesday 13 February 2002 01:01:56 PM IST
$ date --date "Today + 20 years"
Thursday 13 February 2042 01:02:01 PM IST
Puede pasar más argumentos de cadena relativos que los que he mostrado en el ejemplo anterior.
tiempo de epoca
Se puede usar el tiempo de época -d
o --date
bandera.Esta %s
La salida de banderas estará en formato de época.
$ date +%s
1644737777
Para convertirlo a un formato estándar legible por humanos, agregue @
Luego tiempo de época, como se muestra a continuación.
$ date --date @1644737777
Sunday 13 February 2022 01:06:17 PM IST
En todos los ejemplos anteriores, puede ver que se muestra la salida predeterminada.Puede utilizar el formateador con -d
o --date
marca para obtener una salida personalizada.
$ date --date "Today + 20 years" +%Y
2042
$ date --date "Today + 21 years" +%s
2275890194
$ date --date @2275890194 +%Y
2042
en conclusión
En este artículo, discutimos cómo usar date
Comandos en un script Bash con ejemplos.En este punto, debería poder usar fácilmente date
comandos en el script. Hay muchas opciones de formato disponibles, pruébelas y familiarícese con ellas.
Si tiene algún comentario o sugerencia para este artículo, háganoslo saber a través de la sección de comentarios a continuación.