cal命令是Linux系统自带的轻量日历工具,支持显示当前月、多月、全年及指定年月日,高亮当日或指定日,选项如-m、-3、-y、-j等有严格互斥规则。

cal 命令是 Linux 终端里最直接、最轻量的日历显示方式,不用装额外软件,系统自带,敲完回车就出结果。
只显示当前月份日历(最常用)
直接运行 cal 即可,当天日期会被高亮(通常是反色或加粗):
cal
注意:cal 默认以星期日为每周第一天;如果你习惯周一开头,加 -m 选项:
cal -m
- 不加参数时,
cal和cal -1效果一样 - 输出宽度固定为 20 字符左右,适合小终端或脚本嵌入
- 不会自动换行截断,如果终端太窄,可能显示错位——这不是 bug,是设计如此
显示多个月份或整年日历
用 -3 看“上月-本月-下月”三连排,适合快速查临近日期:
cal -3
用 -y 显示全年 12 个月(纯文本,无分页):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
cal -y
-
cal -y必须输入完整四位年份,比如cal -y 2026;写cal -y 26会显示公元 26 年 - 整年输出约 50 行,一屏看不完,建议搭配
less:cal -y 2026 | less -
ncal是cal的替代品,支持横向年历(ncal 2026),但部分精简系统(如 Alpine)可能不预装
查指定年月或某天是否在日历中
格式是 cal [month] [year],月份可以是数字(1–12)或英文缩写(如 sep):
cal 9 2026
cal sep 2026
如果给三个参数,cal [day] [month] [year],会高亮那天(但仅限当月):
cal 8 9 2026
- 月份名不区分大小写,但必须是系统 locale 支持的拼写(中文环境通常仍认英文缩写)
- 年份省略时,第二个参数被当作年份处理:
cal 2026→ 显示 2026 全年;cal 9→ 显示公元 9 年 9 月 - 高亮功能只对日有效,不能跨月或跨年定位
显示儒略日(第几天)或切换周起始
-j 会在每天数字旁标出该日在当年的序号(1 月 1 日 = 1):
cal -j 9 2026
-s 强制星期日开头(覆盖 locale 设置),-m 强制星期一开始:
cal -s -j 9 2026
-
-j对调试脚本有用,比如判断某日是否为年内第 256 天(Linux 系统管理员日) -
-s和-m互斥,同时出现时后者生效 - 这些选项不能和
-y或-3混用,否则报错:cal: illegal option -- j
cal 的核心价值在于“确定性”:它不联网、不读配置、不依赖桌面环境,只要系统没删掉这个二进制,它就永远按 POSIX 规则输出干净的 ASCII 日历。真正容易被忽略的是年份输入规则和选项互斥限制——输错一个参数,它宁可报错也不猜测你的意图。

















