Wéi schafft Dir mam Datum an Zäit am Bash Mat Datum Kommando


Date Kommando ass en externen Bash Programm deen et erlaabt de System Datum an Zäit ze setzen oder ze weisen. Et bitt och verschidde Formatéierungsoptiounen. Date Kommando ass Standard an all Linux Distros installéiert.

$ which date
$ type -a date

Typ Datum Kommando am Terminal deen den aktuellen Datum an Zäit weist.

$ date

Mat Datum Kommando, System Datum, Zäit an Zäitzone kënne geännert ginn an d'Ännerung muss mat der Hardware Auer synchroniséiert ginn.

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

Eng gutt Plaz fir d'Lëscht vun Formatéierungsoptiounen ze kréien ass d'Man Säit.

$ man date

Loosst eis e puer vun den heefegsten Formatéierungsoptioune gesinn, déi mir benotzen.

  • Fir d'Formatéierung z'applizéieren, benotzt + gefollegt vun Formater.
  • Fir eng Lëscht vun Formatéierungsoptioune fir GNU\LINUX ze kréien, kuckt op déi verlinkte Man-Säit.
  • Fir eng Lëscht vun Formatéierungsoptioune fir BSD ze kréien, kuckt op déi verlinkte Mann Säit.

Déi zwee wichteg Deeler vum Datum Kommando benotzt Format +% an –date Optioun.

Loosst eis elo e puer Formatéierung op den Datumkommando uwenden. Fir d'Formatéierung z'applizéieren, add plus Zeechen (+) gefollegt vun %formatter wéi an de Beispiller gewisen.

Loosst eis kucken wéi Dir date verbonnen Formater an engem einfache Shell-Skript mam Numm 'date.sh' benotzt.

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

Loosst eis e Bléck op d'Benotzung vun Zäitrelatéierte Formater an engem einfache Shell-Skript mam Numm 'time.sh' benotzen.

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

Mat --date oder -d Fändel-Input kann als String an Datum Kommando iwwerdroen ginn et intelligent ze handhaben.

Loosst eis e puer Beispiller kucken fir ze verstoen wéi et funktionnéiert.

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

Berechent d'Zuel vun Deeg tëscht 2 uginn Datumen.

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

Fannt dat gegebene Joer Schaltjoer ass oder net.

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

Ausgang vum Datum Kommando un eng Variabel zouzeweisen.

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

Erstellt Logdateien mat dem Datum an den Dateinumm bäigefüügt.

Datum an Zäit bäidroen beim Erstellen vun Logdateien, Backup oder Textdateien ass eng allgemeng Operatioun déi mir am meeschten begéinen. Loosst eis e Beispill huelen, fir e Backup ze huelen, hu mir e Shell-Skript erstallt.

Dëse Skript wäert e Backup vun 00:00 bis 23:59 huelen an all Dag um 00:00 vum nächsten Dag lafen. Mir wëllen Logdateien mat gëschter Datum Format erstellen.

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}

Dat ass et fir dësen Artikel. An dësem Artikel hu mir gesinn wéi Dir Bash Datum an Zäit an Linux benotzt. Loosst eis Äre Feedback wëssen.