دستور date، تاریخ سیستم را نمایش داده و یا تنظیم می‌کند. این دستور، اغلب به منظور چاپ تاریخ و زمان در قالب‌های مختلف و محاسبه تاریخ‌های آینده و گذشته استفاده می‌شود. در این آموزش، اصول اولیه دستور date و نحوه استفاده از گزینه‌های مختلف آن شرح داده شده است.

 

 

استفاده از دستور date لینوکس

ساختار دستور date به صورت زیر است:

date [OPTION]... [+FORMAT]

به منظور نمایش زمان و تاریخ فعلی سیستم با استفاده از قالب بندی پیش فرض، دستور را بدون هیچ گزینه و آرگومان فراخوانی کنید:

date

خروجی این دستور، شامل روز هفته، ماه، روز ماه، ساعت، منطقه زمانی و سال است:

output:
Sat Jun  1 14:31:01 CEST 2019

 

گزینه‌های فرمت تاریخ

خروجی دستور date را می‌توان با دنباله‌ای از کاراکترهای کنترل فرمت که قبل از آن علامت + باشد، فرمت‌دهی کرد. کنترل‌های فرمت با نماد % شروع می‌شوند و با مقادیرشان جایگزین می‌گردند.

date +"Year: %Y, Month: %m, Day: %d"

کاراکتر %Y با سال، %m با ماه و %d با روز ماه جایگزین می‌شود:

output:
Year: 2019, Month: 06, Day: 02

در اینجا یک مثال دیگر وجود دارد:

date "+DATE: %D%nTIME: %T"
output:
DATE: 06/02/19
TIME: 01:47:04

 

در ادامه، لیست مختصری از رایج‌ترین کاراکترهای فرمت‌دهی تاریخ ارائه شده است:

%a: نام مختصر روز هفته Locale (به عنوان مثال، Mon)

%A: نام اختصاری کامل روز هفته Locale (به عنوان مثال، Monday)

%b: نام مختصر ماه Locale (به عنوان مثال، Jan)

%B: نام اختصاری کامل ماه Locale (به عنوان مثال، January)

%d: روز ماه (به عنوان مثال، 01)

%H: ساعت (00..23)

%I: ساعت (01..12)

%j: روز سال (001..366)

%m: ماه (01..12)

%M: دقیقه (00..59)

%S: ثانیه (00..60)

%u: روز هفته (1..7)

%Y: سال کامل (به عنوان مثال، 2019)

به منظور دریافت لیست کامل همه گزینه‌های فرمت‌دهی، date --help یا man date را در ترمینال خود اجرا نمایید.

 

 

این مطلب نیز ممکن است برای شما مفید باشد: ذخیره زمان اجرای دستورات در تاریخچه Bash

 

رشته تاریخ

گزینه d- به شما امکان می‌دهد، برروی یک تاریخ خاص عمل کنید. شما می‌توانید تاریخ را به عنوان یک رشته تاریخ، با استفاده از دستور زیر مشاهده نمایید:

date -d "2010-02-07 12:10:53"
output:
Sun Feb  7 12:10:53 CET 2010

با استفاده از فرمت‌دهی سفارشی:

date -d '16 Dec 1974' +'%A, %d %B %Y'
output:
Monday, 16 December 1974

رشته تاریخ مقادیری مانند “tomorrow” ،“Friday” ،“Last Friday” ،“Next Friday” ،“Next Month” ،“Next Week” و غیره را می‌پذیرد.

date -d "last week"
output:
Sat May 25 14:31:42 CEST 2019

شما همچنین می‌توانید از گزینه رشته تاریخ به منظور نشان دادن زمان محلی برای مناطق زمانی مختلف استفاده نمایید. به عنوان مثال، به منظور نشان دادن زمان محلی برای ساعت 6:30 صبح دوشنبه آینده در سواحل شرقی استرالیا، باید دستور زیر را تایپ کنید:

date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Sun Jun  2 22:30:00 CEST 2019

 

بازنویسی TimeZone

دستور date تاریخ را در منطقه زمانی پیش‌فرض سیستم برمی‌گرداند. به منظور استفاده از یک منطقه زمانی متفاوت، متغیر محیطی TZ را روی منطقه زمانی دلخواه تنظیم نمایید.

به عنوان مثال، برای نشان دادن زمان Melbourne و Aus، باید دستور زیر را تایپ کنید:

TZ='Australia/Melbourne' date
output:
Sat Jun  1 22:35:10 AEST 2019

به منظور لیست کردن تمام مناطق زمانی موجود، شما می‌توانید فایل‌ها در دایرکتوری /usr/share/zoneinfo لیست نمایید، یا از دستور timedatectl list-timezones استفاده کنید.

 

مبدل Epoch

دستور date را می‌توان به عنوان مبدل Epoch استفاده کرد. Epoch یا timestampهای مبتنی بر یونیکس، تعداد ثانیه‌هایی را نشان می‌دهد که از 1 ژانویه 1970 از ساعت 00:00::00 UTC تا زمان کنونی سپری شده است.

به منظور چاپ تعداد ثانیه‌ها از این زمان تا زمان کنونی، دستور date را با کنترل فرمت %s فراخوانی نمایید:

date +%s
1559393792

به منظور تبدیل ثانیه‌ها از آن زمان تا به صورت date، ثانیه‌ها را به عنوان رشته تاریخ با پیشوند @ تنظیم کنید:

date -d @1234567890
output:
Sat Feb 14 00:31:30 CET 2009

 

استفاده از دستور date با سایر دستورات

از دستور date اغلب برای ایجاد نام فایل‌هایی که حاوی زمان و ساعت فعلی هستند، استفاده می‌شود.

دستور زیر یک فایل پشتیبان Mysql با فرمت database_name-20190601.sql ایجاد می‌کند.

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

شما همچنین می‌توانید از دستور date در اسکریپت‌های shell خود استفاده نمایید. در مثال زیر، خروجی date را به متغیر date_now اختصاص می‌دهیم:

date_now=$(date "+%F-%H-%M-%S")

echo $date_now
output:
2019-06-01-15-02-27

 

نمایش آخرین زمان ویرایش یک فایل

دستور date با گزینه r- آخرین زمان ویرایش یک فایل را نشان می‌دهد. مثلا:

date -r /etc/hosts
output:
Tue Jul 24 11:11:48 CEST 2018

اگر می‌خواهید timestamp فایل را تغییر دهید، از دستور touch استفاده کنید.

 

تنظیم تاریخ و ساعت سیستم

تنظیم تاریخ و ساعت سیستم به صورت دستی با دستور date توصیه نمی‌شود؛ زیرا در اکثر توزیع‌های لینوکس، ساعت سیستم با استفاده از سرویس‌های ntp یا systemd-timesyncd همگام سازی می‌شود.

اما اگر می‌خواهید ساعت سیستم را به صورت دستی تنظیم نمایید، شما می‌توانید از گزینه --set= استفاده کنید. به عنوان مثال، اگر می‌خواهید تاریخ و زمان را روی تاریخ 01 ژوئن 2019 و ساعت 17:30 تنظیم نمایید، از دستور زیر استفاده کنید:

date --set="20190601 17:30"

 

 

 

منبع:

linuxize