איך לעבוד עם תאריך וזמן ב-Bash באמצעות פקודת date

הפקודה date היא תוכנית bash חיצונית שמאפשרת להגדיר או להציג את תאריך ושעת המערכת. היא מספקת גם מספר אפשרויות עיצוב. פקודת date מותקנת בכל ההפצות של Linux כברירת מחדל.

$ which date
$ type -a date
Find Date Command Location

הקלד פקודת date בטרמינל כדי להציג את התאריך והשעה הנוכחיים.

$ date
Check Date in Linux

שינוי תאריך ושעת המערכת ב-Linux

על ידי השימוש בפקודת date, ניתן לשנות את תאריך, השעה ואזור הזמן של המערכת, והשינוי חייב להיות מסונכרן עם שעון החומרה.

$ date --set="Thu Nov 12 13:06:59 IST 2020"
$ hwclock --systohc
Set Linux System Date and Time

אפשרויות עיצוב

A good place to get the list of formatting options will be the man page.

$ man date

בואו נראה כמה מהאפשרויות לעיצוב הנפוצות ביותר שנשתמש בהן.

  • כדי להחיל עיצוב, השתמש " + לאחריו " עוצב".
  • כדי לקבל רשימת אפשרויות העיצוב עבור GNU\LINUX ראה בדף האדם המקושר.
  • כדי לקבל רשימת אפשרויות העיצוב עבור BSD ראה בדף האדם המקושר.

שני החלקים החשובים של פקודת date הם השימוש בתבנית +% ואפשרות -date.

עכשיו נפעיל עיצוב על פקודת ה-תאריך. כדי להחיל עיצוב, יש להוסיף סימן פלוס (+) ולאחריו %formatter כפי שמוצג בדוגמאות.

טיפול בתאריך ב-Linux

בואו נסתכל על איך להשתמש בעיצובי תאריך בתוך קובץ script פשוט ב-shell בשם ‘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)"
Find Date and Time using Script

טיפול בזמן ב-Linux

בואו נסתכל על איך להשתמש בעיצובי זמן בתוך קובץ script פשוט ב-shell בשם ‘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)"
Find Time in Linux Using Script

עם דגל –date או -d

עם --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")
Check Date Using Formatting

פעולות נפוצות

לחשב את מספר הימים בין שני תאריכים נתונים.

$ 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
Find Leap Year in Linux

הקצאת הפלט של פקודת ה-תאריך למשתנה.

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

יצירת קבצי לוג עם התאריך המוסף לשם הקובץ.

הוספת תאריך וזמן בזמן יצירת קבצי לוג, גיבוי, או קבצי טקסט היא פעולה נפוצה שנתקל בה בדרך כלל. בוא נסתכל על דוגמה, ליצירת גיבוי, יצרנו script ב-shell.

תסריט זה ייקח גיבוי מ-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}

זהו עבור מאמר זה. במאמר זה, ראינו כיצד להשתמש בתאריך ובשעה של bash ב-Linux. נשמח לשמוע ממך משוב.

Source:
https://www.tecmint.com/change-linux-system-date-and-time/