How to use the command 'cal' (with examples)
- Freebsd
- December 17, 2024
The cal
command is a simple yet versatile command-line utility that displays a calendar in the terminal. It primarily serves to provide users with quick access to monthly or yearly calendars directly through the command line interface. Its functionalities extend beyond displaying the current month, allowing users to access specific years and months, view multiple spans of months, and even examine Julian day numbers. This makes it a valuable tool for those who work extensively in the shell environment or require a quick reference to dates without the need for a graphical calendar application.
Use case 1: Display a calendar for the current month
Code:
cal
Motivation: This use case is perfect when you quickly need to refer to the current month’s calendar — perhaps to see the dates and days of upcoming appointments or events. It’s highly efficient for users who want a fast calendar check without opening additional software.
Explanation: Running the cal
command without any arguments defaults to showing the calendar of the current month. This automatic behavior streamlines accessing the calendar for immediate context.
Example Output:
October 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 31
Use case 2: Display a calendar for a specific year
Code:
cal 2025
Motivation: This is particularly useful for planning future events or revisiting the structure of past years. For instance, coordinating long-term projects or vacations often requires understanding the exact layout of future months.
Explanation: Here, the command includes a specific year, in this case, 2025
. It displays all twelve months of the specified year in one view, making it easy to see how days are distributed throughout the year.
Example Output:
2025
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 1 1
5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8
12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15
19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22
26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 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 2 3 4 5 ... (continues similarly)
Use case 3: Display a calendar for a specific month and year
Code:
cal 7 2022
Motivation: Essential for those instances when you need to ascertain the specific day of a particular event or deadline in a given month and year, such as understanding payroll cycles or vacation days.
Explanation: By passing both a month (7
) and a year (2022
), the command outputs the calendar specifically for July 2022. The order is crucial: first month, then year.
Example Output:
July 2022
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
31
Use case 4: Display the whole calendar for the current year
Code:
cal -y
Motivation: When reviewing the entire year, particularly beneficial for businesses or educational institutions as they plan fiscal years, semesters, or school sessions, getting a yearly overview without scrolling through multiple pages can be vital.
Explanation: By using the -y
flag (short for “year”), the command outputs every month of the current year in a compact format on your terminal screen.
Example Output:
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
8 9 10 11 12 13 14 5 6 7 8 9 10 11 4 5 6 7 8 9 10
15 16 17 18 19 20 21 12 13 14 15 16 17 18 11 12 13 14 15 16 17
22 23 24 25 26 27 28 19 20 21 22 23 24 25 18 19 20 21 22 23 24
29 30 31 ... (continues similarly)
Use case 5: Don’t highlight today and display 3 months spanning a specific date
Code:
cal -h -3 8 2023
Motivation: When past or future planning events, visualizing adjacent months can help better grasp time-related contexts like biannual or overlapping quarterly reviews.
Explanation: The -h
flag prevents highlighting the current day, while -3
shows three months spanning the specified date (August 2023). Note: -3
means three months in total including the target month.
Example Output:
June 2023 July 2023 August 2023
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 1 2 3 4 5
4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12
11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19
18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26
25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 31
30 31
Use case 6: Display the 2 months before and 3 after a specific month of the current year
Code:
cal -A 3 -B 2 5
Motivation: Useful for users examining scheduling impacts for multi-month projects or events, such as housing projects or academic coursework. It helps in understanding the full segment around specific central activities.
Explanation: The -B 2
and -A 3
flags dictate the number of preceding and succeeding months around May (five is for May) of the current year. -A
means after, and -B
means before the specified month.
Example Output:
March 2023 April 2023 May 2023
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 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
June 2023 July 2023
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1
4 5 6 7 8 9 10 2 3 4 5 6 7 8
11 12 13 14 15 16 17 9 10 11 12 13 14 15
18 19 20 21 22 23 24 16 17 18 19 20 21 22
25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
Use case 7: Display Julian days (starting from one, numbered from January 1)
Code:
cal -j
Motivation: Useful in contexts where ordinal day numbers are required, such as astronomy, certain manufacturing industries, or data where date ordinals can simplify processes.
Explanation: The -j
option switches the calendar to display Julian day numbers instead of regular day numbers, starting numbering from January 1st.
Example Output:
October 2023
Su Mo Tu We Th Fr Sa
274 275 276 277 278 279 280
281 282 283 284 285 286 287
288 289 290 291 292 293 294
295 296 297 298 299 300 301
Conclusion
The cal
command, with its suite of options and parameters, is an efficient tool for anyone looking to access calendar information directly from the command line. Whether checking the current month’s layout or planning events across different timescales, cal
ensures that calendar data is both accessible and modifiable to suit various needs. By understanding and utilizing its distinct functionalities, users can optimize their time management and scheduling processes significantly.