Kuinka työskennellä päivämäärän ja ajan kanssa Bashissa käyttämällä päivämääräkomentoa


Date-komento on ulkoinen bash-ohjelma, jonka avulla voidaan asettaa tai näyttää järjestelmän päivämäärä ja kellonaika. Se tarjoaa myös useita muotoiluvaihtoehtoja. Date-komento asennetaan oletusarvoisesti kaikkiin Linux-distroihin.

which date
type -a date

Kirjoita date command terminaaliin, joka näyttää nykyisen päivämäärän ja kellonajan.

date

Muuta Linux-järjestelmän päivämäärää ja kellonaikaa

Käyttämällä date-komentoa järjestelmän päivämäärää, aikaa ja aikavyöhykettä voidaan muokata ja muutos on synkronoitava laitteiston kellon kanssa.

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

Muotoiluasetukset

Hyvä paikka saada luettelo muotoiluvaihtoehdoista on man-sivu.

man date

Katsotaanpa joitain yleisimmistä käyttämistämme muotoiluvaihtoehdoista.

  • Käytä muotoilua painamalla + ja sen jälkeen formatter.
  • Saat luettelon GNU\LINUXin muotoiluvaihtoehdoista katsomalla linkitettyä man-sivua.
  • Saat luettelon BSD:n muotoiluvaihtoehdoista katsomalla linkitettyä man-sivua.

date-komennon kaksi tärkeää osaa käyttää muotoa +% ja –date-vaihtoehtoa.

Käytetään nyt muotoilua date-komennossa. Käytä muotoilua lisäämällä plusmerkki (+) ja sen jälkeen %formatter esimerkkien mukaisesti.

Käsittelypäivämäärä Linuxissa

Katsotaanpa, kuinka päivämäärään liittyviä muotoilijoita käytetään yksinkertaisessa komentotulkkikomentosarjassa nimeltä 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)"

Käsittelyaika Linuxissa

Katsotaanpa, kuinka aikaan liittyviä muotoilijoita käytetään yksinkertaisessa komentotulkkikomentosarjassa nimeltä 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)"

-päivämäärä tai -d-lippu

--date- tai -d-merkinnän syöte voidaan välittää merkkijonona ja date-komento osaa käsitellä sitä älykkäästi.

Katsotaanpa joitain esimerkkejä ymmärtääksemme, miten se toimii.

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

Yhteiset toiminnot

laskea päivien lukumäärä kahden tietyn päivämäärän välillä.

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

Selvitä, onko annettu vuosi karkausvuosi vai ei.

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

Päivämääräkomennon tulosteen määrittäminen muuttujalle.

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

Luo lokitiedostoja, joiden tiedostonimeen on lisätty päivämäärä.

Päivämäärän ja kellonajan lisääminen lokitiedostoja, varmuuskopioita tai tekstitiedostoja luotaessa on tavallinen toiminta, jota kohtaamme useimmin. Otetaan esimerkki, varmuuskopiointia varten olemme luoneet komentosarjan.

Tämä skripti ottaa varmuuskopion kello 00.00–23.59 ja se on ajoitettu suoritettavaksi päivittäin klo 00.00 seuraavana päivänä. Haluamme luoda lokitiedostoja eilisen päivämäärän muodossa.

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}

Siinä se tälle artikkelille. Tässä artikkelissa olemme nähneet kuinka bash-päivämäärää ja -aikaa käytetään Linuxissa. Kerro meille palautteesi.