Kaip dirbti su data ir laiku „Bash“ naudojant datos komandą


Data komanda yra išorinė „bash“ programa, leidžianti nustatyti arba rodyti sistemos datą ir laiką. Taip pat pateikiamos kelios formatavimo parinktys. Data pagal numatytuosius nustatymus yra įdiegta visuose „Linux“ skyriuose.

$ which date
$ type -a date

Įveskite komandą data terminale, kuri parodys dabartinę datą ir laiką.

$ date

Naudojant komandą „data“, sistemos datą, laiką ir laiko juostą galima keisti, o pakeitimas turi būti sinchronizuojamas su aparatūros laikrodžiu.

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

Tinkama vieta gauti formatavimo parinkčių sąrašą bus žmogaus puslapis.

$ man date

Pažiūrėkime keletą dažniausiai naudojamų formatavimo parinkčių.

  • Norėdami pritaikyti formatavimą, naudokite „+“ ir „formatter“.
  • Norėdami gauti GNU\LINUX formatavimo parinkčių sąrašą, peržiūrėkite susietą vyro puslapį.
  • Norėdami gauti BSD formatavimo parinkčių sąrašą, peržiūrėkite susietą vyro puslapį.

Dvi svarbios komandos datos dalys naudoja parinktį Formatas +% ir –date.

Dabar komandoje „data“ pritaikykime šiek tiek formatavimo. Norėdami pritaikyti formatavimą, pridėkite pliuso ženklą (+) , po to - % formatter , kaip parodyta pavyzdžiuose.

Pažvelkime, kaip naudoti su data susijusius formatus paprastame apvalkalo scenarijuje „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)"

Pažvelkime, kaip naudoti su laiku susijusius formatus paprastame apvalkalo scenarijuje, pavadintame „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)"

Naudojant --date arba -d vėliavos įvestį galima perduoti kaip eilutę ir datos komandą žinant, kad ją reikia tvarkyti protingai.

Pažiūrėkime keletą pavyzdžių, kaip suprasti, kaip tai veikia.

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

apskaičiuokite dienų skaičių tarp 2 nurodytų datų.

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

Raskite, ar duoti metai yra keliamieji, ar ne.

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

Datos komandos išvesties priskyrimas kintamajam.

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

Sukurkite žurnalo failus su data, pridėta prie failo pavadinimo.

Datos ir laiko pridėjimas kuriant žurnalo failus, atsargines kopijas ar tekstinius failus yra įprasta operacija, su kuria susidursime dažniausiai. Paimkime pavyzdį, norėdami pasidaryti atsarginę kopiją, sukūrėme apvalkalo scenarijų.

Šis scenarijus bus atsarginis nuo 00:00 iki 23:59 ir planuojamas paleisti kasdien kitos dienos 00:00 val. Mes norime sukurti žurnalo failus vakarykščio datos formatu.

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}

Tai šiam straipsniui. Šiame straipsnyje mes pamatėme, kaip naudoti „Linux“ datą ir laiką. Praneškite mums savo atsiliepimus.