തീയതി കമാൻഡ് ഉപയോഗിച്ച് ബാഷിൽ തീയതിയും സമയവും ഉപയോഗിച്ച് എങ്ങനെ പ്രവർത്തിക്കാം


സിസ്റ്റം തീയതിയും സമയവും സജ്ജീകരിക്കാനോ പ്രദർശിപ്പിക്കാനോ അനുവദിക്കുന്ന ഒരു ബാഹ്യ ബാഷ് പ്രോഗ്രാമാണ് തീയതി കമാൻഡ്. ഇത് നിരവധി ഫോർമാറ്റിംഗ് ഓപ്ഷനുകളും നൽകുന്നു. എല്ലാ ലിനക്സ് ഡിസ്ട്രോകളിലും Date കമാൻഡ് ഡിഫോൾട്ടായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്.

$ which date
$ type -a date

ടെർമിനലിൽ തീയതി കമാൻഡ് ടൈപ്പ് ചെയ്യുക, അത് നിലവിലെ തീയതിയും സമയവും പ്രദർശിപ്പിക്കും.

$ date

തീയതി കമാൻഡ് ഉപയോഗിച്ച്, സിസ്റ്റം തീയതി, സമയം, സമയമേഖല എന്നിവ പരിഷ്uക്കരിക്കാനാകും, കൂടാതെ മാറ്റം ഹാർഡ്uവെയർ ക്ലോക്കുമായി സമന്വയിപ്പിക്കേണ്ടതുണ്ട്.

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

ഫോർമാറ്റിംഗ് ഓപ്ഷനുകളുടെ ലിസ്റ്റ് ലഭിക്കുന്നതിനുള്ള ഒരു നല്ല സ്ഥലം മാൻ പേജ് ആയിരിക്കും.

$ man date

ഞങ്ങൾ ഉപയോഗിക്കുന്ന ഏറ്റവും സാധാരണമായ ചില ഫോർമാറ്റിംഗ് ഓപ്ഷനുകൾ നോക്കാം.

  • ഫോർമാറ്റിംഗ് പ്രയോഗിക്കുന്നതിന് “+ തുടർന്ന് “ഫോർമാറ്റർ“ ഉപയോഗിക്കുക.
  • GNU\LINUX-നുള്ള ഫോർമാറ്റിംഗ് ഓപ്ഷനുകളുടെ ഒരു ലിസ്റ്റ് ലഭിക്കാൻ ലിങ്ക് ചെയ്ത മാൻ പേജ് നോക്കുക.
  • BSD-യ്uക്കുള്ള ഫോർമാറ്റിംഗ് ഓപ്ഷനുകളുടെ ഒരു ലിസ്റ്റ് ലഭിക്കുന്നതിന് ലിങ്ക് ചെയ്uത മാൻ പേജ് നോക്കുക.

തീയതി കമാൻഡിന്റെ രണ്ട് പ്രധാന ഭാഗങ്ങൾ ഫോർമാറ്റ് +% ഉം –date ഓപ്ഷനും ഉപയോഗിക്കുന്നു.

ഇപ്പോൾ നമുക്ക് തീയതി കമാൻഡിൽ ചില ഫോർമാറ്റിംഗ് പ്രയോഗിക്കാം. ഫോർമാറ്റിംഗ് പ്രയോഗിക്കുന്നതിന്, ഉദാഹരണങ്ങളിൽ കാണിച്ചിരിക്കുന്നതുപോലെ (+) എന്നതിന് ശേഷം %formatter എന്നതിന്റെ പ്ലസ് ചിഹ്നം ചേർക്കുക.

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

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

--date അല്ലെങ്കിൽ -d ഉപയോഗിച്ച് ഫ്ലാഗ് ഇൻപുട്ട് സ്ട്രിംഗ് ആയി നൽകാം, തീയതി കമാൻഡിന് അത് സമർത്ഥമായി കൈകാര്യം ചെയ്യാൻ അറിയാം.

ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് മനസിലാക്കാൻ ചില ഉദാഹരണങ്ങൾ നോക്കാം.

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

നൽകിയിരിക്കുന്ന 2 തീയതികൾക്കിടയിലുള്ള ദിവസങ്ങളുടെ എണ്ണം കണക്കാക്കുക.

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

നൽകിയിരിക്കുന്ന വർഷം അധിവർഷമാണോ അല്ലയോ എന്ന് കണ്ടെത്തുക.

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

തീയതി കമാൻഡിന്റെ ഔട്ട്പുട്ട് ഒരു വേരിയബിളിലേക്ക് നൽകുന്നു.

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

ഫയൽ നാമത്തിലേക്ക് ചേർത്ത തീയതി ഉപയോഗിച്ച് ലോഗ് ഫയലുകൾ സൃഷ്ടിക്കുക.

ലോഗ് ഫയലുകൾ, ബാക്കപ്പ് അല്ലെങ്കിൽ ടെക്സ്റ്റ് ഫയലുകൾ എന്നിവ സൃഷ്ടിക്കുമ്പോൾ തീയതിയും സമയവും ചേർക്കുന്നത് നമ്മൾ പലപ്പോഴും അഭിമുഖീകരിക്കുന്ന ഒരു സാധാരണ പ്രവർത്തനമാണ്. നമുക്ക് ഒരു ഉദാഹരണം എടുക്കാം, ഒരു ബാക്കപ്പ് എടുക്കാൻ, ഞങ്ങൾ ഒരു ഷെൽ സ്ക്രിപ്റ്റ് സൃഷ്ടിച്ചു.

ഈ സ്uക്രിപ്uറ്റ് 00:00 മുതൽ 23:59 വരെ ബാക്കപ്പ് എടുക്കുകയും അടുത്ത ദിവസം 00:00 ന് ദിവസവും റൺ ചെയ്യാൻ ഷെഡ്യൂൾ ചെയ്യുകയും ചെയ്യും. ഇന്നലത്തെ തീയതി ഫോർമാറ്റിൽ ലോഗ് ഫയലുകൾ സൃഷ്ടിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു.

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}

ഈ ലേഖനത്തിന് അത്രയേയുള്ളൂ. ഈ ലേഖനത്തിൽ, ലിനക്സിൽ ബാഷ് തീയതിയും സമയവും എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഞങ്ങൾ കണ്ടു. നിങ്ങളുടെ ഫീഡ്ബാക്ക് ഞങ്ങളെ അറിയിക്കുക.