Linux Shell 脚本中 date 命令常用用法
在处理日志分析、定时任务或数据归档时,我们经常需要动态计算日期。Linux 自带的 date 命令非常强大,配合 -d 参数就能完成大部分时间运算。下面整理了一些实战中常用的技巧。
基础格式化输出
默认情况下,date 会显示当前时间。通过 % 开头的格式符可以自定义输出样式:
date +%Y%m%d
# 输出示例:20231027
date +"%Y/%m/%d %H:%M.%S"
# 输出示例:2023/10/27 14:30.05
相对时间加减运算
使用 -d 参数可以指定一个日期字符串,系统会自动解析并计算。这是脚本中最常用的功能:
# 显示明天的日期
date -d "+1 day" +%Y%m%d
# 显示昨天的日期
date -d "-1 day" +%Y%m%d
# 显示上个月的第一天
date -d "-1 month" +%Y%m%d
# 显示明年的今天
date -d "+1 year" +%Y%m%d
如果需要基于特定日期进行偏移,可以直接传入该日期:
# 将 2017 年 12 月 31 日减去一天
date -d "20171231 -1 day" +%Y%m%d
# 输出:20171230
# 获取 8 天前的日期
date -d "-8 days" +%Y%m%d
在脚本中引用这些结果时,推荐使用 $() 语法替代反引号,兼容性更好:
echo $(date -d "-8 days" +%Y%m%d)
月末日期计算技巧
获取上月末或当月末的日期是常见需求,但要注意月份天数差异(如 2 月)。
获取上月最后一天
思路是先找到本月第一天,然后减一天:
# 方法一:利用 last-month 关键字(部分系统支持)
date -d "last month" +%Y%m%d
-d +%Y%m%d

