{{Short description |Shell command for printing a calendar}} {{lowercase title}} {{Infobox software | name = cal | logo = | screenshot = Cal screenshot.png | screenshot size = | caption = The <code>cal</code> command as shown in a Linux zsh session in Arch Linux | developer = Charles Dye | released = {{Start date and age|1971|11|3}} | latest release version = | latest release date = | programming language = Plan 9: C<br />FreeDOS: x86 assembly language | operating system = Unix, Unix-like, Plan 9, Inferno, MSX-DOS, FreeDOS | platform = Cross-platform | genre = Command | license = util-linux: BSD-4-Clause<br />FreeDOS: Freeware / Source-available software<br />Plan 9: MIT License | website = }} '''{{code|cal}}'''<!-- do not subst template: <code> tag breaks popups --> is a shell command that prints a calendar as ASCII text for one or more months. With no command-line options, it prints a calendar for the current month.

It is specified in the Single UNIX Specification and available on various operating systems including Unix, Plan 9, Inferno and Unix-like systems such as Linux. It was present in 1st Edition Unix. A <code>cal</code> command is also part of ASCII's ''MSX-DOS2 Tools'' for MSX-DOS version 2.<ref>{{Cite web|url=https://archive.org/details/MSXDOS2TOOLS|title=MSX-DOS2 Tools User's Manual - MSX-DOS2 TOOLS ユーザーズマニュアル|date=April 1, 1993|via=Internet Archive}}</ref> It is also available for FreeDOS (developed by Charles Dye) in which it supports the Gregorian calendar (new style) and may be distributed freely, with or without source.<ref>{{Cite web|url=https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/cal.html|title=ibiblio.org FreeDOS Package -- cal (Unix-like)|website=www.ibiblio.org|access-date=2020-01-27|archive-date=2020-02-22|archive-url=https://web.archive.org/web/20200222110909/http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/cal.html|url-status=live}}</ref>

==Examples== The following prints the current month calendar which in this case happens to be Feb. 2024.

<syntaxhighlight lang="console"> $ cal February 2024 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 </syntaxhighlight>

The following prints a calendar for the previous, current and next month.

<syntaxhighlight lang="console"> $ cal -3 June 2022 July 2022 August 2022 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 2 1 2 3 4 5 6 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20 19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27 26 27 28 29 30 24 25 26 27 28 29 30 28 29 30 31 </syntaxhighlight>

The following prints a calendar for each month of 2023.

<syntaxhighlight lang="console"> $ cal 2023 2023 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 6 1 2 3 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 1 2 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 2 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 31 </syntaxhighlight>

The following prints a calendar for the June 2023. A month is specified by its number (1-12) in the year.

<syntaxhighlight lang="console"> $ cal 6 2023 June 2023 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 </syntaxhighlight>

==Quirks (1752)== {{more|Calendar (New Style) Act 1750}} <syntaxhighlight lang="console"> $ cal 9 1752 September 1752 S M Tu W Th F S 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 </syntaxhighlight>

The Gregorian calendar reform was adopted by the Kingdom of Great Britain, including its possessions in North America (later to become eastern USA and Canada), in September 1752. As a result, the September 1752 cal shows the adjusted days missing. This month was the official (British) adoption of the Gregorian calendar from the previously used Julian calendar. This has been documented in the man pages for Sun Solaris as follows. "An unusual calendar is printed for September 1752. That is the month when 11 days were skipped to make up for lack of leap year adjustments."<ref>{{Cite web|url=https://docs.oracle.com/cd/E26502_01/html/E29030/cal-1.html#scrolltoc|title=Synopsis - man pages section 1: User Commands|website=docs.oracle.com|access-date=2016-06-23|archive-date=2019-05-09|archive-url=https://web.archive.org/web/20190509015457/https://docs.oracle.com/cd/E26502_01/html/E29030/cal-1.html#scrolltoc|url-status=live}}</ref> The Plan 9 from Bell Labs manual states: "Try {{mono|cal sep 1752}}." Date of adoption of the reform differs widely between countries so, for some users, this feature may be a bug. Special handling of 1752 is known to have appeared as early as the first edition of the ''Unix Programmer's Manual'' in 1971.<ref>{{Cite book |last=Thompson |first=K. |url=http://squoze.net/UNIX/v1man/man6/cal |title=Unix Programmer's Manual |last2=Ritchie |first2=D. M. |publisher=Bell Telephone Laboratories |year=1971 |edition=First |pages=cal (VI) |archive-date=2023-02-05 |access-date=2023-04-09 |archive-url=https://web.archive.org/web/20230205015037/http://squoze.net/UNIX/v1man/man6/cal |url-status=live }}</ref>

==See also== * {{Annotated link| Cron}} * {{Annotated link| List of POSIX commands}}

==References== {{Reflist}} {{Refbegin}} * {{man|cu|cal|SUS|print a calendar}} {{Refend}} == Sources == * {{cite book |last1=Ray |first1=Deborah S. |last2=Ray |first2=Eric J. |date=2010 |editor-last=Gulick|editor-first=Rebecca |title=Unix and Linux: Visual QuickStart Guide |publisher=Book Publishers |pages=276–278 |chapter=Calendaring with cal|chapter-url=https://books.google.com/books?id=M-z1SWdCKkwC&dq=cal+linux&pg=PA276 |isbn= 9780132104470|name-list-style=}}

==External links== {{Wikibooks|Guide to Unix|Commands}} * {{man|1|cal|Plan 9}} * {{man|1|cal|Inferno}} * {{man|1|cal|die.net}} * {{man|1|cal|FreeBSD}} * {{man|1|cal|NetBSD}} * {{man|1|cal|OpenBSD}} * [https://web.archive.org/web/20160221144829/http://www.csd.uwo.ca/staff/magi/personal/humour/Computer_Audience/%27cal%209%201752%27%20explained.html Source of explanation of cal 9 1752 phenomena] (humor)

{{Unix commands}} {{Plan 9 commands}} {{Calendaring software}}

Category:Calendaring software Cal Category:Unix SUS2008 utilities Category:Plan 9 commands Category:Inferno (operating system) commands