Jinsi ya kufanya kazi na Tarehe na Wakati katika Bash Kutumia Tarehe Amri


Amri ya tarehe ni programu ya nje ya bash ambayo inaruhusu kuweka au kuonyesha tarehe na wakati wa mfumo. Pia hutoa chaguzi kadhaa za umbizo. Amri ya tarehe imewekwa katika distros zote za Linux kwa chaguo-msingi.

$ which date
$ type -a date

Andika amri ya tarehe kwenye terminal ambayo itaonyesha tarehe na wakati wa sasa.

$ date

Kwa kutumia amri ya tarehe, tarehe ya mfumo, saa na saa za eneo zinaweza kurekebishwa na mabadiliko lazima yalandanishwe na saa ya maunzi.

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

Mahali pazuri pa kupata orodha ya chaguo za umbizo patakuwa ukurasa wa mtu.

$ man date

Hebu tuone baadhi ya chaguo za kawaida za uumbizaji ambazo tutatumia.

  • Kutumia uumbizaji tumia + ikifuatiwa na umbizo.
  • Ili kupata orodha ya chaguo za umbizo za GNU\LINUX angalia ukurasa wa mtu uliounganishwa.
  • Ili kupata orodha ya chaguo za umbizo la BSD angalia ukurasa wa mtu aliyeunganishwa.

Sehemu mbili muhimu za amri ya tarehe ni kutumia Format +% na -date chaguo.

Sasa hebu tutumie umbizo fulani kwenye amri ya tarehe. Ili kutumia uumbizaji, ongeza alama ya kuongeza (+) ikifuatiwa na %formatter kama inavyoonyeshwa katika mifano.

Wacha tuangalie jinsi ya kutumia fomati zinazohusiana na tarehe katika hati rahisi ya ganda inayoitwa '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)"

Hebu tuangalie jinsi ya kutumia viumbiza vinavyohusiana na wakati katika hati rahisi ya ganda inayoitwa ‘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)"

Kwa --date au -d ingizo la bendera linaweza kupitishwa kama mfuatano na amri ya tarehe inavyojua kuishughulikia kwa busara.

Hebu tuone baadhi ya mifano ili kuelewa jinsi inavyofanya kazi.

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

hesabu idadi ya siku kati ya tarehe 2 zilizotolewa.

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

Tafuta mwaka uliopewa ni mwaka wa kurukaruka au la.

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

Inapeana matokeo ya amri ya tarehe kwa kutofautisha.

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

Unda faili za kumbukumbu na tarehe iliyoongezwa kwa jina la faili.

Kuongeza tarehe na wakati wakati wa kuunda faili za kumbukumbu, chelezo, au faili za maandishi ni operesheni ya kawaida ambayo tutakutana nayo mara nyingi. Hebu tuchukue mfano, kuchukua nakala rudufu, tumeunda script ya shell.

Hati hii itachukua nakala kuanzia 00:00 hadi 23:59 na imeratibiwa kuendeshwa kila siku saa 00:00 ya siku inayofuata. Tunataka kuunda faili za kumbukumbu na umbizo la tarehe ya jana.

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}

Hiyo ni kwa makala hii. Katika nakala hii, tumeona jinsi ya kutumia tarehe na wakati wa bash kwenye Linux. Tujulishe maoni yako.