Kuidas töötada kuupäeva ja kellaajaga Bashis, kasutades kuupäeva käsku


Käsk Kuupäev on väline bashi programm, mis võimaldab süsteemi kuupäeva ja kellaaega määrata või kuvada. See pakub ka mitmeid vormindamisvalikuid. Käsk Date on vaikimisi installitud kõikidesse Linuxi distrosse.

$ which date
$ type -a date

Sisestage terminali käsk date, mis kuvab praeguse kuupäeva ja kellaaja.

$ date

Käsu date abil saab süsteemi kuupäeva, kellaaega ja ajavööndit muuta ning muudatus tuleb sünkroonida riistvarakellaga.

$ date --set="Thu Nov 12 13:06:59 IST 2020"
$ hwclock --systohc

Hea koht vormindamisvalikute loendi saamiseks on man leht.

$ man date

Vaatame mõningaid levinumaid vormindamisvalikuid, mida me kasutame.

  • Vorminduse rakendamiseks kasutage klahvi + ja seejärel vormindust.
  • GNU\LINUXi vormindamisvalikute loendi saamiseks vaadake lingitud manulehte.
  • BSD vormindamisvalikute loendi saamiseks vaadake lingitud manulehte.

Käsu kuupäev kaks olulist osa kasutavad valikut Vorming +% ja –date.

Rakendame nüüd käsul kuupäev veidi vormindust. Vormingu rakendamiseks lisage plussmärk (+) , millele järgneb % formatter , nagu näidetes näidatud.

Vaatame, kuidas kasutada kuupäevaga seotud vormindajaid lihtsas shelliskriptis nimega ‘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)"

Vaatame, kuidas kasutada ajaga seotud vormindajaid lihtsas shelliskriptis nimega ‘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)"

Kasutades --kuupäev või -d saab sisestada lipu, kuna string ja kuupäeva käsk teavad seda arukalt käsitseda.

Vaatame mõningaid näiteid selle toimimise mõistmiseks.

# 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")

arvutage päevade arv kahe etteantud kuupäeva vahel.

$ echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))

Leidke, et antud aasta on liigaasta või mitte.

$ for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

Käsu date väljundi määramine muutujale.

$ TODAY=$(date +%Y-%m-%d)
OR
$ TODAY1=$(date +%F)
$ echo $TODAY 
$ echo $TODAY1

Looge failinimele lisatud kuupäevaga logifailid.

Kuupäeva ja kellaaja lisamine logifailide, varukoopiate või tekstifailide loomisel on tavaline toiming, millega me kõige sagedamini kokku puutume. Võtame näite. Varukoopia tegemiseks oleme loonud shelliskripti.

Selle skripti varundamine toimub ajavahemikul 00:00 kuni 23:59 ja see peaks toimuma iga päev järgmise päeva kell 00:00. Soovime luua eilse kuupäeva vorminguga logifailid.

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}

See on selle artikli jaoks. Selles artiklis oleme näinud, kuidas kasutada Linuxis bashi kuupäeva ja kellaaega. Andke meile tagasisidet.