CAL(1) دستورات کاربری CAL(1)

cal - نمایش تقویم

cal [options] [[[day] month] year]

cal [options] [timestamp|monthname]

دستور cal یک تقویم ساده را نمایش می‌دهد. اگر هیچ آرگومانی مشخص نشود، ماه جاری نمایش داده می‌شود.

مقدار month می‌تواند به صورت عدد (1-12)، به صورت نام کامل ماه یا نام اختصاری ماه بر اساس محلی‌سازی‌های جاری مشخص شود.

دو سیستم تقویم مختلف استفاده می‌شود: گرگوری و ژولینی. این دو سیستم تقریباً یکسان هستند، با این تفاوت که تقویم گرگوری تنظیم کوچکی در بسامد سال‌های کبیسه ایجاد می‌کند؛ این کار هماهنگی بهتری با رویدادهای خورشیدی مانند اعتدالین فراهم می‌سازد. اصلاحات تقویم گرگوری در سال ۱۵۸۲ معرفی شد، اما پذیرش آن تا سال ۱۹۲۳ ادامه یافت. به صورت پیش‌فرض cal تاریخ ۳ سپتامبر ۱۷۵۲ را به عنوان تاریخ پذیرش استفاده می‌کند. از آن تاریخ به بعد تقویم گرگوری نمایش داده می‌شود؛ تاریخ‌های پیش از آن از سیستم تقویم ژولینی استفاده می‌کنند. در زمان پذیرش، ۱۱ روز حذف شدند تا تقویم با رویدادهای خورشیدی هماهنگ شود. بنابراین سپتامبر ۱۷۵۲ ترکیبی از تاریخ‌های ژولینی و گرگوری دارد که در آن پس از روز ۲ام، روز ۱۴ام قرار می‌گیرد (روزهای ۳ تا ۱۳ وجود ندارند).

به صورت اختیاری، می‌توان منحصراً از تقویم گرگوری گسترش‌یافته یا تقویم ژولینی استفاده کرد. بخش --reform را در زیر ببینید.

-1, --one

نمایش خروجی تک‌ماهه. (این حالت پیش‌فرض است.)

-3, --three

نمایش سه ماه پیرامون تاریخ داده‌شده.

-n , --months number

نمایش number ماه، با شروع از ماهی که شامل تاریخ داده‌شده است.

-S, --span

نمایش ماه‌های پیرامون تاریخ داده‌شده.

-s, --sunday

نمایش یکشنبه به عنوان نخستین روز هفته.

-m, --monday

نمایش دوشنبه به عنوان نخستین روز هفته.

-v, --vertical

نمایش با استفاده از چیدمان عمودی (معروف به حالت ncal(1)).

--iso

نمایش منحصراً تقویم گرگوری گسترش‌یافته (proleptic Gregorian). این گزینه بر شماره‌های هفته و نخستین روز هفته تأثیری ندارد. بخش --reform در زیر را ببینید.

-j, --julian

استفاده از شماره‌گذاری روز در سال برای تمام تقویم‌ها. به این روزها، روزهای ترتیبی (ordinal days) نیز گفته می‌شود. روزهای ترتیبی در بازه ۱ تا ۳۶۶ قرار دارند. این گزینه سیستم تقویم را از گرگوری به ژولینی تغییر نمی‌دهد؛ این کار توسط گزینه --reform کنترل می‌شود.

گاهی اوقات به تقویم‌های گرگوری که از تاریخ‌های ترتیبی استفاده می‌کنند، تقویم‌های ژولینی گفته می‌شود. این موضوع می‌تواند به دلیل قراردادهای متعدد مرتبط با تاریخ که از واژه ژولینی در نام خود استفاده می‌کنند گیج‌کننده باشد: تاریخ ژولینی (ترتیبی)، تاریخ (تقویم) ژولینی، تاریخ ژولینی (نجومی)، تاریخ ژولینی (تعدیل‌شده) و موارد دیگر. این گزینه julian نامیده شده زیرا روزهای ترتیبی توسط استاندارد POSIX با نام julian شناخته می‌شوند. با این حال، توجه داشته باشید که cal از سیستم تقویم ژولینی نیز استفاده می‌کند. بخش DESCRIPTION در بالا را ببینید.

--reform val

این گزینه تاریخ پذیرش اصلاحات تقویم گرگوری را تنظیم می‌کند. تاریخ‌های تقویم پیش از اصلاحات از سیستم تقویم ژولینی استفاده می‌کنند. تاریخ‌های تقویم پس از اصلاحات از سیستم تقویم گرگوری استفاده می‌کنند. آرگومان val می‌تواند موارد زیر باشد:
•1752 - تاریخ ۳ سپتامبر ۱۷۵۲ را به عنوان تاریخ اصلاحات تنظیم می‌کند (پیش‌فرض). این زمانی است که اصلاحات تقویم گرگوری توسط امپراتوری بریتانیا پذیرفته شد.
•gregorian - تقویم‌های گرگوری را منحصراً نمایش می‌دهد. این جایگزین ویژه تاریخ اصلاحات را کمتر از کوچک‌ترین سال قابل استفاده در cal قرار می‌دهد؛ بدین معنی که تمام خروجی تقویم از سیستم تقویم گرگوری استفاده می‌کند. به این حالت تقویم گرگوری گسترش‌یافته (proleptic Gregorian) می‌گویند، زیرا تاریخ‌های پیش از ایجاد سیستم تقویم از مقادیر برون‌یابی‌شده استفاده می‌کنند.
•iso - نام مستعار برای gregorian. استاندارد ISO 8601 برای نمایش تاریخ‌ها و زمان‌ها در تبادل اطلاعات مستلزم استفاده از تقویم گرگوری گسترش‌یافته است.
•julian - تقویم‌های ژولینی را منحصراً نمایش می‌دهد. این جایگزین ویژه تاریخ اصلاحات را بیشتر از بزرگ‌ترین سال قابل استفاده در cal قرار می‌دهد؛ بدین معنی که تمام خروجی تقویم از سیستم تقویم ژولینی استفاده می‌کند.

بخش DESCRIPTION در بالا را ببینید.

-y, --year

نمایش تقویم برای کل سال.

-Y, --twelve

نمایش تقویم برای دوازده ماه آینده.

-w, --week[=number]

نمایش شماره هفته‌ها در تقویم بر اساس قالب US یا ISO-8601. اگر یک number مشخص شود، هفته درخواستی در سال مورد نظر یا سال جاری چاپ شده و شماره آن برجسته می‌شود. اگر month نیز مشخص شده باشد، مقدار number ممکن است نادیده گرفته شود.

اگر number مشخص شده باشد اما روز جاری در خط فرمان مشخص نشده باشد، روز جاری برجسته نمی‌شود.

برای جزئیات بیشتر بخش NOTES را ببینید.

--color[=when]

رنگی‌سازی خروجی. آرگومان اختیاری when می‌تواند auto، never یا always باشد. اگر آرگومان when حذف شود، مقدار پیش‌فرض آن auto است. رنگ‌ها را می‌توان غیرفعال کرد؛ برای مشاهده پیش‌فرض درونی جاری خروجی --help را بررسی کنید. همچنین بخش COLORS را ببینید.

-c, --columns=columns

تعداد ستون‌های مورد استفاده. مقدار auto به اندازه‌ای که در ترمینال جا شود ستون ایجاد می‌کند.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

تک‌پارامتر فقط رقمی (مانند 'cal 2020')

مشخص‌کننده سال برای نمایش؛ توجه داشته باشید که سال باید به طور کامل مشخص شود: دستور cal 89 تقویمی برای سال ۱۹۸۹ نمایش نخواهد داد.

تک‌پارامتر رشته‌ای (مانند 'cal tomorrow' یا 'cal August')

مشخص‌کننده برچسب زمان (timestamp) یا نام ماه (یا نام اختصاری آن) بر اساس محلی‌سازی‌های جاری.

هنگام تجزیه برچسب زمان، جایگزین‌های ویژه پذیرفته می‌شوند؛ "now" برای اشاره به زمان فعلی، و "today"، "yesterday" و "tomorrow" به ترتیب برای اشاره به روز جاری، روز قبل یا روز بعد استفاده می‌شوند.

مشخصات تاریخ نسبی نیز پذیرفته می‌شوند؛ در این حالت "+" به عنوان زمان فعلی به علاوه بازه زمانی مشخص‌شده ارزیابی می‌شود. به همین ترتیب، بازه زمانی دارای پیشوند "-" به عنوان زمان فعلی منهای بازه زمانی مشخص‌شده ارزیابی می‌شود، مانند '+2days'. به جای قرار دادن پیشوند "+" یا "-" روی بازه زمانی، می‌توان پسوند فاصله و کلمه "left" یا "ago" را نیز به کار برد (مانند '1 week ago').

دو پارامتر (مانند 'cal 11 2020')

بیانگر ماه (1 - 12) و سال هستند.

سه پارامتر (مانند 'cal 25 11 2020')

بیانگر روز (1-31)، ماه و سال هستند، و اگر تقویم در ترمینال نمایش داده شود، روز مورد نظر برجسته خواهد شد. اگر هیچ پارامتری مشخص نشود، تقویم ماه جاری نمایش داده می‌شود.

یک سال در ۱ ژانویه آغاز می‌شود. نخستین روز هفته توسط محلی‌سازی یا گزینه‌های --sunday و --monday تعیین می‌شود.

شماره‌گذاری هفته به انتخاب نخستین روز هفته بستگی دارد. اگر یکشنبه باشد، شماره‌گذاری مرسوم آمریکای شمالی استفاده می‌شود که در آن ۱ ژانویه در هفته شماره ۱ قرار دارد. اگر دوشنبه باشد (-m)، شماره‌گذاری استاندارد ISO 8601 استفاده می‌شود که در آن نخستین پنجشنبه در هفته شماره ۱ قرار می‌گیرد.

رنگی‌سازی خروجی توسط قابلیت terminal-colors.d(5) پیاده‌سازی شده است. رنگ‌آمیزی ضمنی را می‌توان با یک فایل خالی

/etc/terminal-colors.d/cal.disable

برای دستور cal یا برای تمام ابزارها با فایل

/etc/terminal-colors.d/disable

غیرفعال کرد.

از نسخه ۲٫۴۱، متغیر محیطی $NO_COLOR نیز برای غیرفعال کردن رنگی‌سازی خروجی پشتیبانی می‌شود، مگر اینکه صریحاً توسط یک گزینه خط فرمان فعال شده باشد.

مسیرهای مختص کاربر $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d بر تنظیمات سراسری اولویت دارند.

توجه داشته باشید که رنگی‌سازی خروجی ممکن است به طور پیش‌فرض فعال باشد، و در این حالت نیازی نیست دایرکتوری‌های terminal-colors.d از پیش وجود داشته باشند.

نام‌های رنگی منطقی پشتیبانی‌شده توسط cal عبارتند از:

today

روز جاری.

weeknumber

شماره هفته درخواست‌شده توسط گزینه خط فرمان --week=<number>.

weeks

شماره هفته.

header

سربرگ ماه.

workday

روزهایی که در طول هفته کاری قرار دارند.

weekend

روزهایی که خارج از هفته کاری قرار دارند (پایان هفته).

برای نمونه:

echo -e 'weekend 35\ntoday 1;41\nheader yellow' > $HOME/.config/terminal-colors.d/cal.scheme

دستور cal در AT&T UNIX نسخه ۶ ظاهر شد.

خروجی پیش‌فرض cal از تاریخ ۳ سپتامبر ۱۷۵۲ به عنوان تاریخ اصلاحات تقویم گرگوری استفاده می‌کند. تاریخ‌های اصلاحات تاریخی برای سایر مناطق، از جمله معرفی آن در اکتبر ۱۵۸۲، پیاده‌سازی نشده‌اند.

تقویم‌های جایگزین، مانند ام‌القری، هجری خورشیدی، گعز (Ge’ez)، یا قمری-شمسی هندی، پشتیبانی نمی‌شوند.

terminal-colors.d(5)

برای گزارش باگ‌ها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues. استفاده کنید.

دستور cal بخشی از بسته util-linux است که می‌توان آن را از آرشیو هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت کرد.

2026-09-02 util-linux 2.42.3