cal 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
cal——系统信息/杂项命令族(见系统信息与用户命令族)。它不起眼,但想快速看"这个月 15 号是周几""下个月怎么排"时,终端里敲一下比开日历 app 快。
cal 在终端打印日历。默认显示当前月份的网格,也能指定年、月或整年。
一、基本用法
bash
cal # 显示当前月
cal 2026 # 显示整个 2026 年(12 个月网格)
cal 8 2026 # 显示 2026 年 8 月(注意参数顺序:月 年)默认打印当月。给两个数字时顺序是
月 年(不是年 月),这是 cal 反直觉的地方,容易写反。cal 年份直接出全年。
二、常用选项
bash
cal -m # -m 周一开头(默认周日开头,更符合国内习惯)
cal -3 # -3 显示上个月、本月、下个月三张
cal -y # -y 显示全年(等价于 cal 今年)
cal -j # -j 用一年中的第几天(day-of-year)标注
-m把周一放第一列,国内阅读更顺;-3一眼看前后两个月,排期时很实用;-j显示年中第几天,做"第 N 天"类计算时用得上。
三、与 date 配合算相对日期
bash
cal -m $(date +%m) $(date +%Y) # 显式显示"当前年月的周一开始日历"虽然默认就是当月,但显式拼 date 出来在脚本/别名里更可控,尤其配合
-m做成"周一开头看本月"的固定视图。
四、踩坑:参数顺序与旧版差异
bash
cal 2026 8 # 某些 cal 版本会当成"年份 2026、月份 8",
# 但 BSD/macOS 的 cal 参数解析不同,跨平台脚本要小心cal 在不同实现(util-linux 版 vs BSD 版)参数顺序略有差异,写跨平台脚本时别依赖特定行为;纯看当月用无参
cal最稳。另外它只能显示公历,没有农历。
五、实战:排期时看上下文月
bash
cal -3 -m # 看上月/本月/下月,快速确认某截止日落在周几相关命令
一句话总结
cal = 终端日历:无参看当月,月 年 看指定月(顺序别写反),-m 周一开头、-3 看三月、-y 看全年。轻量排期神器,但只支持公历、跨平台参数略有差异。看精确时间戳用 date。