在日常使用Linux系统时,处理日期是再常见不过的事。比如写个备份脚本,想把当天的日期加到文件名里;或者查看日志时,需要按日期范围筛选内容。这时候,bash里的日期操作命令就派上用场了。
查看当前日期和时间
最基础的命令是 date,直接输入就能看到当前的时间:
date
输出可能是这样:
Wed Apr 5 10:23:45 CST 2023
格式化输出日期
默认格式可能不适合做文件名或记录。可以用 + 加格式符来自定义输出。比如只想显示年月日:
date +"%Y-%m-%d"
结果就是:
2023-04-05
常用格式符号有:
%Y:四位年份%m:两位月份%d:两位日期%H:小时(24小时制)%M:分钟%S:秒
用日期命名备份文件
假设你要打包一个配置目录,希望压缩包名字带日期,可以这样写:
tar -czf backup_$(date +%Y%m%d).tar.gz /path/to/configs
执行后会生成类似 backup_20230405.tar.gz 的文件,一目了然。
获取昨天或明天的日期
有时候需要往前或往后推一天。GNU版的 date 支持 -d 参数:
date -d "yesterday" +%Y-%m-%d
输出昨天的日期。同理:
date -d "tomorrow" +%Y-%m-%d
可以拿到明天的日期。也支持更自然的表达:
date -d "last Monday" +%Y-%m-%d
或者:
date -d "+3 days" +%Y-%m-%d
表示三天后的日期。
时间戳转换
有些场景下会遇到时间戳(从1970年开始的秒数)。可以用 date 把它转成可读格式:
date -d @1680680625
反过来,把日期转成时间戳也很简单:
date -d "2023-04-05 10:00:00" +%s
这个功能在写定时任务或比对时间区间时特别有用。
小技巧:补零和调整格式
某些系统上,月份或日期如果是单数,默认不补零。可以用 %-m 或 %_m 控制显示方式,但更稳妥的是统一用两位格式 %m 和 %d,避免脚本出错。
跨平台注意点
macOS上的 date 命令和Linux略有不同,不支持 GNU 的 -d 参数。如果在Mac上操作,建议安装 coreutils 包,使用 gdate 命令替代。