菜鸟科技网

Linux 日历命令有哪些常用功能?

Linux 系统提供了多种日历命令,用于显示当前日期、时间、月历或年历,甚至可以查看特定年份的日历,这些命令虽然功能看似简单,但在 shell 脚本、任务调度或日志分析中非常实用,以下将详细介绍 Linux 中常用的日历命令,包括 datecalncal 等命令的用法及其选项。

Linux 日历命令有哪些常用功能?-图1
(图片来源网络,侵删)

date 命令:显示和设置系统时间

date 是 Linux 中最基础的时间命令,默认显示当前系统的日期和时间,格式为“星期 月 日 时分秒 时区 年”。

基本用法

直接输入 date,输出类似:

Wed Nov 15 14:30:25 CST 2023  

CST 表示中国标准时间(东八区)。

自定义格式输出

date 支持通过 加格式字符串自定义输出,常用格式符包括:

Linux 日历命令有哪些常用功能?-图2
(图片来源网络,侵删)
  • %Y:四位年份(如 2023)
  • %m:两位月份(01-12)
  • %d:两位日期(01-31)
  • %H:24小时制小时(00-23)
  • %M:分钟(00-59)
  • %S:秒(00-60,60 表示闰秒)
  • %A:完整星期名称(如 Wednesday)
  • %B:完整月份名称(如 November)

示例:

date "+%Y-%m-%d %H:%M:%S"  # 输出:2023-11-15 14:30:25  
date "+%A, %B %d, %Y"       # 输出:Wednesday, November 15, 2023  

设置系统时间

需 root 权限,使用 sudo date --set 修改时间:

sudo date --set="2023-12-31 23:59:59"  # 设置系统时间为 2023-12-31 23:59:59  

cal 命令:显示月历和年历

cal(calendar)用于显示日历,默认显示当前月份的日历,包含星期表头(Su Mo Tu We Th Fr Sa)。

基本用法

cal  # 显示当前月历(如 2023 年 11 月)  

显示指定月份的日历

格式:cal 月份 年份,月份范围 1-12,年份为 4 位数。

Linux 日历命令有哪些常用功能?-图3
(图片来源网络,侵删)
cal 11 2023  # 显示 2023 年 11 月日历  
cal 2 2024   # 显示 2024 年 2 月(闰月)  

显示整年日历

cal -y 2023  # 显示 2023 年全年日历  

其他选项

  • -j:显示一年中的第几天(Julian 日期),11 月 15 日是第 319 天。
  • -m:以星期一为每周第一天(默认为星期日)。

ncal 命令:增强版日历工具

ncalcal 的增强版,支持更多格式选项,部分系统(如 macOS)默认使用 ncal

基本用法

ncal  # 功能与 `cal` 类似,但默认以星期一为第一天  

显示年历并突出当前日期

ncal -y 2023  # 显示 2023 年年历,当前日期高亮(需终端支持)  

显示星期和 ISO 周数

  • -w:显示 ISO 周数(每年 1-52 或 53 周)。
  • -W:仅显示周数,不显示日期。
    ncal -w 11 2023  # 显示 2023 年 11 月的日历及每周周数  

日历命令对比

以下表格总结了三个常用日历命令的核心功能差异:

命令 主要功能 常用选项 特点
date 显示/设置系统时间 +格式--set 支持自定义时间格式
cal 显示月历/年历 -y-j-m 简单直观,默认周日为第一天
ncal 增强版日历 -y-w-M(周一为第一天) 支持周数、ISO 日期格式

实际应用场景

  1. 日志分析:结合 dategrep 按时间筛选日志,
    grep "$(date "+%Y-%m-%d")" /var/log/syslog  # 查看今天的系统日志  
  2. 任务调度:在 shell 脚本中使用 cal 判断月末或闰年,
    cal $(date +%m) $(date +%Y) | grep -q "31" && echo "本月有31天"  
  3. 时间格式化:使用 date 生成符合特定格式的文件名,
    touch backup_$(date "+%Y%m%d_%H%M%S").log  

相关问答 FAQs

Q1:如何让 date 命令显示 Unix 时间戳(Epoch 时间)?
A:使用 date +%s 可显示当前时间的 Unix 时间戳(从 1970-01-01 00:00:00 UTC 到现在的秒数)。

date +%s  # 输出:1700123456  

若需将时间戳转换为日期,可使用 date -d

date -d @1700123456  # 输出:Wed Nov 15 14:30:56 CST 2023  

Q2:calncal 在显示星期顺序上有何区别?如何修改?
A:cal 默认以星期日(Su)为每周第一天,ncal 默认以星期一(Mo)为第一天,若需修改 cal 的星期顺序,可使用 -m 选项(周一为第一天):

cal -m 11 2023  # 2023 年 11 月日历,以星期一为第一天  

ncal 可通过 -M 选项切换为周日为第一天:

ncal -M 11 2023  # 2023 年 11 月日历,以星期日为第一天  
分享:
扫描分享到社交APP
上一篇
下一篇