كيفية العمل مع التاريخ والوقت في Bash باستخدام أمر date

أمر التاريخ هو برنامج خارجي في باش يسمح بـ تعيين أو عرض تاريخ النظام والوقت . كما يوفر عدة خيارات تنسيق. يتم تثبيت أمر التاريخ في جميع توزيعات لينكس افتراضيًا.

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

اكتب أمر التاريخ في الطرفية الذي سيعرض التاريخ والوقت الحالي.

$ date
Check Date in Linux

تغيير تاريخ ووقت نظام لينكس

باستخدام أمر التاريخ ، يمكن تعديل تاريخ النظام والوقت والمنطقة الزمنية ويجب مزامنة التغيير مع ساعة الأجهزة.

$ 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

لنرى بعض أكثر خيارات التنسيق شيوعًا التي سنستخدمها.

  • لتطبيق التنسيق ، استخدم ” + تليها ” محدد “.
  • للحصول على قائمة بخيارات التنسيق لجنو \ لينكس ، اطلع على صفحة man المرتبطة.
  • للحصول على قائمة بخيارات التنسيق لـ BSD ، اطلع على صفحة man المرتبطة.

الجزءان المهمان في أمر التاريخ هو استخدام تنسيق وخيار -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)"
Find Date and Time using Script

التعامل مع الوقت في لينكس

لنلقِ نظرة على كيفية استخدام المنسقات ذات الصلة بالوقت في سكربت قشري بسيط يسمى ‘ 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

إنشاء ملفات سجل مع إضافة التاريخ إلى اسم الملف.

إضافة التاريخ والوقت أثناء إنشاء ملفات سجل، نسخ احتياطي، أو ملفات نصية هو عملية شائعة سنواجهها في معظم الأحيان. لنأخذ مثالًا، لإجراء نسخ احتياطي، قمنا بإنشاء سكربت قشري.

سيقوم هذا السكربت بإجراء نسخ احتياطي من الساعة 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}

هذا كل شيء لهذا المقال. في هذا المقال، رأينا كيفية استخدام تاريخ ووقت باش في لينكس. دعنا نعرف رأيك.

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