CAL(1)

๐Ÿ’… CAL(1) โ€” bestie's guide to the calendar ๐Ÿ’…

ok so this is cal(1), a User Commands page โ€” it ships in the util-linux package and honestly? it's the most lowkey iconic little date machine ever. sit down, grab a strawberry drink ๐Ÿ“, and let's get into it.


๐Ÿ“… NAME ๐Ÿ“…

cal โ€” display a calendar. that's it. that's the whole vibe. ๐Ÿ—“๏ธ


โœจ SYNOPSIS โœจ

cal [options] [[[day] month] year]
cal [options] [timestamp|monthname]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

cal displays a simple calendar. no args at all? you get the current month, periodt. ๐Ÿซถ

the month can be given as a number (1-12), as a month name, or as an abbreviated month name โ€” all according to the current locales, iykyk.

so here's the lore: there are two calendar systems in play, Gregorian and Julian. they're nearly identical, except Gregorian makes a tiny lil adjustment to how often leap years happen, which helps sync things up better with solar events like the equinoxes. the Gregorian calendar reform was introduced in 1582, but adoption kept rolling until 1923. by default, cal uses the adoption date of 3 Sept 1752 โญ. from that date forward you get the Gregorian calendar; earlier dates use the Julian system. 11 days were removed at adoption time to bring the calendar in sync with solar events โ€” so Sept 1752 is literally a mashup of Julian and Gregorian dates where the 2nd is followed by the 14th (the 3rd through the 13th are justโ€ฆ gone ๐Ÿ’€).

optionally, either the proleptic Gregorian calendar or the Julian calendar may be used exclusively. see --reform below ๐Ÿ‘‡


๐Ÿ”ฅ OPTIONS ๐Ÿ”ฅ

  • -1, --one โ€” display single month output. (this is the default, she's the main character.)
  • -3, --three โ€” display three months spanning the date.
  • -n, --months number โ€” display number of months, starting from the month containing the date.
  • -S, --span โ€” display months spanning the date.
  • -s, --sunday โ€” display Sunday as the first day of the week.
  • -m, --monday โ€” display Monday as the first day of the week.
  • -v, --vertical โ€” display using a vertical layout (aka ncal(1) mode).
  • --iso โ€” display the proleptic Gregorian calendar exclusively. this option does not affect week numbers and the first day of the week. see --reform below.
  • -j, --julian โ€” use day-of-year numbering for all calendars. these are also called ordinal days, and they range from 1 to 366. this option does not switch from the Gregorian to the Julian calendar system โ€” that's controlled by the --reform option.

ok real talk, this naming is a whole mess ๐Ÿ™ˆ sometimes Gregorian calendars using ordinal dates get called "Julian calendars," which is confusing because SO many date conventions use "Julian" in their name: (ordinal) julian date, julian (calendar) date, (astronomical) julian date, (modified) julian date, and more. this option is named julian because ordinal days are identified as julian by the POSIX standard. but be aware that cal also uses the Julian calendar system. see DESCRIPTION above ๐Ÿ‘†

  • --reform val โ€” sets the adoption date of the Gregorian calendar reform. calendar dates previous to the reform use the Julian calendar system; dates after the reform use the Gregorian calendar system. the argument val can be:
    • 1752 โ€” sets 3 September 1752 as the reform date (default). this is when the Gregorian calendar reform was adopted by the British Empire. ๐Ÿ‘‘
    • gregorian โ€” display Gregorian calendars exclusively. this special placeholder sets the reform date below the smallest year that cal can use, meaning all calendar output uses the Gregorian calendar system. this is called the proleptic Gregorian calendar, because dates prior to the calendar system's creation use extrapolated values.
    • iso โ€” alias of gregorian. the ISO 8601 standard for the representation of dates and times in information interchange requires using the proleptic Gregorian calendar.
    • julian โ€” display Julian calendars exclusively. this special placeholder sets the reform date above the largest year that cal can use, meaning all calendar output uses the Julian calendar system.

see DESCRIPTION above ๐Ÿ’œ

  • -y, --year โ€” display a calendar for the whole year.
  • -Y, --twelve โ€” display a calendar for the next twelve months.
  • -w, --week[=number] โ€” display week numbers in the calendar according to the US or ISO-8601 format. if a number is specified, the requested week in the desired or current year will be printed and its number highlighted. the number may be ignored if month is also specified.

if the number is specified but the current day is unspecified on the command line, then the current day is not highlighted. ๐Ÿ™…โ€โ™€๏ธ

see the NOTES section for more details.

  • --color[=when] โ€” colorize the output. the optional argument when can be auto, never or always. if the when argument is omitted, it defaults to auto. the colors can be disabled; for the current built-in default see the --help output. see also the COLORS section. ๐ŸŒˆ
  • -c, --columns=columns โ€” number of columns to use. auto uses as many as fit the terminal.
  • -h, --help โ€” display help text and exit.
  • -V, --version โ€” display version and exit.

๐ŸŽ€ PARAMETERS ๐ŸŽ€

  • Single digits-only parameter (e.g., 'cal 2020') โ€” specifies the year to be displayed; note the year must be fully specified: cal 89 will not display a calendar for 1989. no shortcuts bestie ๐Ÿ˜ญ
  • Single string parameter (e.g., 'cal tomorrow' or 'cal August') โ€” specifies a timestamp or a month name (or abbreviated name) according to the current locales.

the special placeholders are accepted when parsing timestamp: "now" may be used to refer to the current time, and "today", "yesterday", "tomorrow" refer to the current day, the day before, or the next day, respectively. โฐ

the relative date specifications are also accepted โ€” in this case "+" is evaluated to the current time plus the specified time span. correspondingly, a time span prefixed with "-" is evaluated to the current time minus the specified time span, for example '+2days'. instead of prefixing the time span with "+" or "-", it may also be suffixed with a space and the word "left" or "ago" (for example '1 week ago'). โœจ

  • Two parameters (e.g., 'cal 11 2020') โ€” denote the month (1 - 12) and year.
  • Three parameters (e.g., 'cal 25 11 2020') โ€” denote the day (1-31), month and year, and the day will be highlighted if the calendar is displayed on a terminal. if no parameters are specified, the current month's calendar is displayed. ๐ŸŒธ

๐Ÿ’€ NOTES ๐Ÿ’€

a year starts on January 1. the first day of the week is determined by the locale or by the --sunday and --monday options.

the week numbering depends on the choice of the first day of the week. if it's Sunday, then the customary North American numbering is used, where 1 January is in week number 1. if it's Monday (-m), then the ISO 8601 standard week numbering is used, where the first Thursday is in week number 1. ๐Ÿ—“๏ธ


๐ŸŒˆ COLORS ๐ŸŒˆ

the output colorization is implemented by terminal-colors.d(5) functionality. implicit coloring can be disabled by an empty file

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

for the cal command, or for all tools by

/etc/terminal-colors.d/disable

since version 2.41, the $NO_COLOR environment variable is also supported to disable output colorization โ€” unless it's explicitly enabled by a command-line option. ๐Ÿšซ๐ŸŒˆ

the user-specific $XDG_CONFIG_HOME/terminal-colors.d or $HOME/.config/terminal-colors.d overrides the global setting.

note that output colorization may be enabled by default, and in that case the terminal-colors.d directories don't have to exist yet. (yes, she can be colorful before her folders even exist. queen behavior. ๐Ÿ‘‘)

the logical color names supported by cal are:

  • today โ€” the current day.
  • weeknumber โ€” the week number requested by the --week=<number> command line option.
  • weeks โ€” the number of the week.
  • header โ€” the header of a month.
  • workday โ€” days that fall within the work-week.
  • weekend โ€” days that fall outside the work-week.

for example:

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

๐Ÿงš HISTORY ๐Ÿงš

a cal command appeared in Version 6 AT&T UNIX. she's been serving calendar looks since forever. โญ


๐Ÿ™ˆ BUGS ๐Ÿ™ˆ

the default cal output uses 3 September 1752 as the Gregorian calendar reform date. the historical reform dates for the other locales, including its introduction in October 1582, are not implemented. ๐Ÿ˜ญ

alternative calendars, such as the Umm al-Qura, the Solar Hijri, the Ge'ez, or the lunisolar Hindu, are not supported.


๐Ÿซถ SEE ALSO ๐Ÿซถ

terminal-colors.d(5)


๐Ÿ› REPORTING BUGS ๐Ÿ›

for bug reports, use the issue tracker https://github.com/util-linux/util-linux/issues.


โญ AVAILABILITY โญ

the cal command is part of the util-linux package which can be downloaded from Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.


okay that's the whole page bestie, go forth and print some calendars ๐Ÿ’–

and btw before you close this tab: this icon was brought to you by util-linux 2.42.4, dated 2026-09-21 โ€” slay, see you next release ๐ŸŒธโœจ

๐Ÿ“ฆ where this page comes from
  • arch rolling: util-linux 2.42.4-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause-UC AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND ISC AND LGPL-2.1-or-later AND LicenseRef-PublicDomain
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms