استرجاع تاريخ الأمس مهمة متكررة في البرمجة النصية وأتمتة لينكس. يقدم هذا الدليل طريقتين موثوقتين باستخدام الأمر date
المدمج، ويستكشف الاعتبارات المتعلقة بالمناطق الزمنية.
محتويات
استخدام الأمر date
يتضمن النهج الأبسط استخدام وظيفة “الأمس” المدمجة في الأمر date
مباشرةً:
date -d "yesterday" +%Y-%m-%d
هذا الأمر:
date
: ينادي الأمر date.-d "yesterday"
: يحدد أننا نريد تاريخ الأمس.+%Y-%m-%d
: يُنسيق المخرجات على شكل YYYY-MM-DD. يمكنك تخصيص هذا (مثلًا،+%F
،+%Y/%m/%d
،+%d/%m/%Y
).
مثال: إذا كان اليوم هو 2024-10-27، فستكون المخرجات: 2024-10-26
معالجة المناطق الزمنية لتحقيق دقة أكبر
بالنسبة للبرامج النصية التي تتطلب حسابات تواريخ دقيقة عبر مناطق زمنية مختلفة، هناك حاجة إلى طريقة أكثر قوة. في حين أن الطريقة السابقة تكفي عادةً، إلا أن هناك احتمالية لظهور عدم اتساق بسبب انتقالات التوقيت الصيفي. يستخدم هذا النهج المُحسّن وقت الإيبوك:
date -d "@$(($(date +%s) - 86400))" +%Y-%m-%d
هذا الأمر:
date +%s
: يحصل على الوقت الحالي بالثواني منذ الإيبوك (1 يناير 1970، 00:00:00 UTC).$(...)
: استبدال الأمر، الذي يلتقط مخرجات الأمر الداخلي.- 86400
: يطرح 86400 ثانية (يوم واحد).@(...)
: يخبرdate
بتفسير القيمة السابقة على أنها ثوانٍ منذ الإيبوك.date -d "..." +%Y-%m-%d
: يُنسيق وقت الإيبوك الناتج على شكل YYYY-MM-DD.
تكفل هذه الطريقة الدقة من خلال معالجة وقت الإيبوك مباشرةً، وتجنب الغموض المحتمل المتعلق بالمناطق الزمنية.
بالنسبة لمعظم السيناريوهات، تكفي الطريقة الأولى باستخدام date -d "yesterday"
. ومع ذلك، بالنسبة للتطبيقات الحرجة أو البرامج النصية عبر المناطق الزمنية، يوفر النهج الثاني حلاً أكثر موثوقية. تذكر تخصيص تنسيق المخرجات وفقًا لمتطلباتك المحددة.