GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar el comando de fecha en Bash Scripting en Linux

Cuando comencé a escribir scripts de bash, me di cuenta de que una operación con la que a menudo trato cada script es el manejo de la fecha y la hora. He realizado muchas operaciones, como nombrar un archivo/directorio con la fecha, obtener el resultado de la API y transformar el valor de época a la fecha/hora adecuada para la aplicación, manipular la columna de fecha en archivos CSV, etc. Si es un principiante en Bash scripting, este artículo ayudará a comprender cómo usar el comando de fecha en scripts de Bash, cómo trabajar con fecha y hora usando el comando de fecha en scripts de shell, cómo manipularlos y realizar varias operaciones con él en Linux.

Debe tener una comprensión básica de cómo se establece la fecha y la hora de un sistema. El administrador del servidor se encargará principalmente de esta parte en su trabajo.

Pero si usted es un usuario individual y usa Linux en su máquina personal, entonces debe comprender cómo se configuran la fecha y la hora, las formas de sincronizarlas y cómo modificarlas.

Linux utiliza dos relojes para mantener la hora sincronizada.

  • Reloj en tiempo real - Este es un reloj integrado en la placa base de su sistema y funcionará incluso si apaga la máquina.
  • Reloj del sistema - Esto será manejado por el kernel de Linux y durante el arranque del sistema, el kernel obtendrá la hora inicial del reloj en tiempo real.

No voy a pasar por el proceso de establecer una fecha y hora, ese es un tema aparte para discutir. Comencemos a analizar la parte central de este artículo sobre cómo usar la date comando en secuencias de comandos Bash en Linux.

Obtención de ayuda

Primero, puede verificar la ubicación binaria de la date comando ejecutando el siguiente comando.

$ which date
/usr/bin/date

La date El comando no es un shell incorporado sino un programa externo. Puede obtener esa información ejecutando el type comando.

$ type -a date
date is /usr/bin/date
date is /bin/date

Hay muchas opciones para trabajar y recordar todo no es posible y aquí es donde la ayuda y la página de manual serán útiles.

Ejecute el siguiente comando para acceder a la página de manual de date comando.

$ man date

Ejecute el siguiente comando para acceder al mensaje de ayuda.

$ date --help

Imprimir fecha y hora actuales

Inicie su terminal y simplemente ejecute date dominio. Obtendrá la fecha actual junto con la hora y la zona horaria. En mi caso, he configurado la zona horaria como IST durante la instalación de mi sistema operativo.

$ date
Sunday 13 February 2022 11:27:17 AM IST

También puede obtener la fecha y la hora en UTC zona horaria usando -u bandera.

$ date -u
Sunday 13 February 2022 05:57:36 AM UTC

Conversión de zona horaria

Puede obtener la salida de la date Comando en diferentes zonas horarias configurando la variable ambiental TZ . He configurado la TZ en Moscú y Singapur 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 obtener la lista de zonas horarias ejecutando "timedatectl " comando.

$ timedatectl list-timezones
$ timedatectl list-timezones | grep -i singapore
Asia/Singapore
Singapore
$ timedatectl list-timezones | grep -i moscow
Europe/Moscow

Hora de la última modificación de un archivo

Normalmente, usamos el stat Comando para comprobar la hora de modificación de un archivo. Lo mismo se puede comprobar con la date comando usando -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 el stat el formato de salida del comando es diferente de la date comando, pero ambos tienen el mismo propósito.

Diferentes opciones de formato

La date El comando admite opciones de formato y al usar estas opciones puede formatear su date ordene que la salida esté en cualquier formato que desee o puede tomar solo el valor particular de la salida.

Abra la date página de manual del comando y busque la sección como se muestra en la imagen de abajo.

Hay muchas opciones de formato, pero no todas serán útiles. Veremos algunas de las opciones de formato importantes y entenderemos cómo funciona.

Por defecto, la date El comando mostrará la fecha y la hora. ¿Qué sucede si desea imprimir solo la fecha o la hora?

$ date
Sunday 13 February 2022 11:27:17 AM IST

Para obtener solo la fecha, puede usar el %F bandera o %D bandera.

$ date +%F
2021-11-16
$ date +%D
02/13/22

Cuando esté utilizando banderas de formateador, debe prefijarlo con + símbolo como lo hice en los ejemplos anteriores.

  • La salida del %F la bandera estará en YYYY-MM-DD formato.
  • La salida del %D la bandera estará en MM/DD/YY formato.

Puede tomar el día, el mes y el año individualmente y crear su propia salida con 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 la fecha, también puede obtener el tiempo a solas usando %r (formato de 12 horas) o %T (formato de 24 horas) banderas.

$ date +%r # 12 hour format
11:24:12 PM IST
$ date +%T # 24 hour format
23:24:11

Puede tomar 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 del script, lo nombraré con la fecha de hoy. Así que me será útil echarle un vistazo cuando sea necesario.

Hasta ahora hemos visto cómo trabajar con fecha y hora individualmente. A veces, es posible que desee mostrar tanto la fecha como la hora. En ese caso, puede combinar la fecha y la hora como se indica a continuación o crear su propia salida con formato.

$ date "+%F %r"
2021-11-16 11:29:06 PM IST

Ejecutar script solo en ciertos días

En algunos casos, es posible que desee ejecutar su secuencia de comandos solo en un determinado día de la semana. Por ejemplo, si quiero que mi secuencia de comandos se ejecute solo el viernes, puedo usar %A (viernes) o %a (Viernes) y escriba la lógica 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. Consulte la página del manual y explórelos todos.

Almacenamiento de resultados en una variable

Al escribir scripts, es una buena práctica almacenar el resultado de la date comando a una variable y use la variable en el script. Uno de esos escenarios será crear el nombre del archivo con la fecha y la hora.

Eche un vistazo al siguiente ejemplo donde la fecha de hoy se almacenará en la variable TDY y lo mismo se usa para crear un nombre de archivo "disk_usage_${TDY}.txt " que almacenará la salida de "df -h " comando.

$ 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

Usando -d o --date Bandera

Esta es una característica importante que más me gusta con la date dominio. Puede pasar la cadena como argumento a -d o --date bandera y obtendrá la salida en el formato predeterminado.

Echa un vistazo a los siguientes ejemplos. He pasado argumentos de cadena como "today ", "yesterday ", "tomorrow ", "last Thursday ", "Today (+,-) 20 years " al --date bandera. El comando de 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 no sean los que he mostrado en el ejemplo anterior.

Epoca Tiempo

La hora de época se puede convertir al formato de fecha y hora actual usando -d o --date bandera. El %s la salida de la bandera estará en formato de época.

$ date +%s
1644737777

Para convertirlo al formato estándar legible por humanos, agregue @ seguido de la hora de la é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 combinar los formateadores junto 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

Conclusión

En este artículo, discutimos cómo usar la date Comando en secuencias de comandos Bash con ejemplos. En este momento, deberías sentirte cómodo usando la date comando en sus guiones. Hay muchas opciones de formato disponibles, pruébelas y familiarícese con ellas.

Si tiene algún comentario o sugerencia sobre este artículo, háganoslo saber a través de la sección de comentarios a continuación.

Guías de secuencias de comandos de Bash:

  • Cómo depurar scripts Bash en Linux y Unix
  • Bash Scripting:análisis de argumentos en Bash Scripts mediante getopts
  • Cómo crear cuadros de diálogo GUI en secuencias de comandos Bash con Zenity en Linux y Unix
  • Secuencias de comandos de Bash:declaración de caso
  • Secuencias de comandos de Bash:declaraciones condicionales
  • Bash Scripting:manipulación de cadenas
  • Secuencias de comandos de Bash:comando Printf explicado con ejemplos
  • Bash Scripting:matriz indexada explicada con ejemplos
  • Secuencias de comandos de Bash:matriz asociativa explicada con ejemplos
  • Secuencias de comandos de Bash:bucle For explicado con ejemplos
  • Secuencias de comandos de Bash:ciclo while y till explicado con ejemplos
  • Redireccionamiento de Bash explicado con ejemplos
  • Secuencias de comandos de Bash:variables explicadas con ejemplos
  • Bash Scripting:funciones explicadas con ejemplos
  • Comando Bash Echo explicado con ejemplos en Linux
  • Tutorial de Bash Heredoc para principiantes

Linux
  1. Cómo usar el comando grep de Linux

  2. Cómo usar el comando de historial en Linux

  3. Cómo usar el comando Su en Linux

  4. Cómo usar el comando Uptime en Ubuntu Linux

  5. Cómo usar el comando de pantalla de Linux

Cómo usar du Command en Linux

Cómo usar el comando Declare en Linux Bash Shell

Cómo usar el comando echo en Bash Scripts en Linux

Cómo usar el comando sysctl en Linux

Cómo usar el comando de apagado de Linux

Cómo usar grep en Linux