Como trabalhar com data e hora no Bash usando o comando date
O comando Date é um programa bash externo que permite definir ou exibir a data e hora do sistema. Ele também oferece várias opções de formatação. O comando Date é instalado em todas as distribuições Linux por padrão.
which date
type -a date
Digite comando de data no terminal que exibirá a data e hora atuais.
date
Alterar data e hora do sistema Linux
Usando o comando date, a data, a hora e o fuso horário do sistema podem ser modificados e a alteração deve ser sincronizada com o relógio do hardware.
date --set="Thu Nov 12 13:06:59 IST 2020"
hwclock --systohc
Opções de formatação
Um bom lugar para obter a lista de opções de formatação será a página de manual.
man date
Vamos ver algumas das opções de formatação mais comuns que usaremos.
- Para aplicar a formatação use “+ seguido de “formatter“.
- Para obter uma lista de opções de formatação para GNU\LINUX, dê uma olhada na página de manual vinculada.
- Para obter uma lista de opções de formatação para BSD, dê uma olhada na página de manual vinculada.
As duas partes importantes do comando date são usar o formato +%
e a opção –date.
Agora vamos aplicar alguma formatação no comando de data. Para aplicar a formatação, adicione o sinal de adição (+)
seguido de %formatter
conforme mostrado nos exemplos.
Tratamento de data no Linux
Vamos dar uma olhada em como usar formatadores relacionados a datas em um script de shell simples chamado ‘date.sh‘.
PRINT YEAR,MONTH,DAY AND DATE...
echo "We are in the year = $(date +%Y)"
echo "We are in the year = $(date +%y)"
Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year.
echo "We are in the month = $(date +%m)"
echo "We are in the month = $(date +%b)"
echo "We are in the month = $(date +%B)"
Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name.
echo "Current Day of the month = $(date +%d)"
echo "Current Day of the week = $(date +%A)"
echo "Current Day of the week = $(date +%a)"
Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name.
Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format.
echo "Date using %D = $(date +%D)"
echo "Date using %F = $(date +%F)"
Lidando com o tempo no Linux
Vamos dar uma olhada em como usar formatadores relacionados ao tempo em um script de shell simples chamado ‘time.sh’.
PRINT HOURS, MINS, SECONDS, NANO SECONDS
echo Hours = $(date +%H)
echo Minutes = $(date +%M)
echo Seconds = $(date +%S)
echo Nanoseconds = $(date +%N)
echo Epoch Time = $(date +%s)
echo "current time = $(date +%H:%M:%S:%N)"
can also use %T which displays Time in HH:MM:SS format.
echo "current time in 24 hour format = $(date +%T)"
can also use %r to display time in 12 hour format.
echo "current time in 12 hour format = $(date +%r)"
Com sinalizador –date ou -d
Com o sinalizador --date
ou -d
a entrada pode ser passada como string e o comando de data sabe como lidar com isso de maneira inteligente.
Vejamos alguns exemplos para entender como funciona.
Print yesterday's date and time.
echo "Yesterday = $(date -d "Yesterday")"
Print Tomorrow date and time.
echo "tomorrow = $(date -d "tomorrow")"
Find what is the date and time before 10 days from now.
echo "Before 10 days = $(date -d "tomorrow -10 days")"
Find last month and next month
echo "Last month = $(date -d "last month" "%B")"
echo "Next month = $(date -d "next month" "%B")"
Find last year and next year
echo "Last Year = $(date -d "last year" "+%Y")"
echo "Next Year = $(date -d "next year" "+%Y")"
Forecast the weekday
echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")
Operações Comuns
calcule o número de dias entre 2 datas fornecidas.
echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))
Descubra se o ano determinado é bissexto ou não.
for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done
Atribuindo a saída do comando date a uma variável.
TODAY=$(date +%Y-%m-%d)
OR
TODAY1=$(date +%F)
echo $TODAY
echo $TODAY1
Crie arquivos de log com a data adicionada ao nome do arquivo.
Adicionar data e hora ao criar arquivos de log, backup ou arquivos de texto é uma operação comum que encontraremos com mais frequência. Vejamos um exemplo, para fazer um backup, criamos um script shell.
Este script fará um backup das 00h00 às 23h59 e será programado para ser executado diariamente às 00h00 do dia seguinte. Queremos criar arquivos de log com o formato de data de ontem.
CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M")
LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log
echo "Script started" >> ${LOG_FILE}
...
CODE BLOCKS
...
echo "Script completed" >> ${LOG_FILE}
É isso neste artigo. Neste artigo, vimos como usar a data e hora do bash no Linux. Deixe-nos saber seu feedback.