View calenders in Terminal using built-in commands

David Carr


This tweet introduces how to show a calendar in a terminal, very neat!


After this, I started thinking about what other calendar views are there.

When in the terminal, you can see a small calendar by typing:


This then shows you a calendar:


Other options:

  • -1 Display single month output. (This is the default.)
  • -3 Display prev/current/next month output.
  • -s Display Sunday as the first day of the week.
  • -m Display Monday as the first day of the week.
  • -j Display Julian dates (days one-based, numbered from January 1).
  • -y Display a calendar for the current year.
  • -V Display version information and exit.

A single parameter specifies the year (1 - 9999) to be displayed; note the year must be fully specified: ‘’cal 89’’ will not display a calendar for 1989. Two parameters denote the month (1 - 12) and year. Three parameters 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.

A year starts on Jan 1. The first day of the week is determined by the locale. The Gregorian Reformation is assumed to have occurred in 1752 on the 3rd of September. By this time, most countries had recognized the reformation (although a few did not recognize it until the early 1900s.) Ten days following that date were eliminated by the reformation, so the calendar for that month is a bit unusual.

Also, you can change the view by using



To see the previous, current and next month use:

cal -3


Fathom Analytics $10 discount on your first invoice using this link

Help support the blog so that I can continue creating new content!


Fathom Analytics $10 discount on your first invoice using this link

Subscribe to my newsletter

Subscribe and get my books and product announcements.

© 2006 - 2024 DC Blog. All code MIT license. All rights reserved.