Shell内置变量 - date
date是Shell中内置变量,用于获取日期时间。可通过以下命令,查看该内置变量的使用。
date --help
1、date的用法
date的用法:
date [OPTION]... [+FORMAT]
这里介绍下常用的 OPTION 选项 和 +FORMAT 格式。
1.1、OPTION 选项
-d | --date=STRING | 以字符串展示时间,需要设置展示的时间 |
-f | --file=DATEFILE | 以文件行的方式展示时间,文件行不为空,则显示时间 |
演示详情如下:
[root@node1 ~]# echo $(date -f /root/text.log +%F)
2021-11-06 2021-11-06 2021-11-06 2021-11-06 2021-11-06
[root@node1 ~]# cat text.log
12
2
3
4
5
[root@node1 ~]# echo $(date -d now +%F)
2021-11-06
-f,后需要跟文件,日期的展示次数与文件中的行数有关;
-d,后需要跟时间。
1.2、FORMAT详情
格式
|
含义
|
%Y
|
年份 2001 ~ 2020
|
%m
|
月份 01 ~ 12
|
%d
|
日期 01 ~ 31
|
%H
|
小时 00 ~ 23
|
%M
|
分钟 00 ~ 59
|
%S
|
秒数 00 ~ 59
|
%F
|
full date 等价于 %Y-%m-%d
YYYY-mm-dd日期 2020-11-06
|
%T
|
HH-MM-SS时间 %H:%M:%S
|
FORMAT 演示详情如下:
[root@node1 ~]# echo $(date +%Y)
2021
[root@node1 ~]# echo $(date +%m)
11
[root@node1 ~]# echo $(date +%d)
06
[root@node1 ~]# echo $(date +%H)
08
[root@node1 ~]# echo $(date +%m)
11
[root@node1 ~]# echo $(date +%M)
02
[root@node1 ~]# echo $(date +%S)
02
[root@node1 ~]# echo $(date +%F)
2021-11-06
[root@node1 ~]# echo $(date +%T)
08:03:17
2、命令演示详情
2.1、获取今天日期
[root@node1 ~]# date -d now +%Y-%m-%d
2021-11-06
[root@node1 ~]# date +%F
2021-11-06
2.2、获取明天日期
[root@node1 ~]# date -d next-day +%Y-%m-%d
2021-11-07
[root@node1 ~]# date -d tomorrow +%Y-%m-%d
2021-11-07
2.3、获取昨天日期
[root@node1 ~]# date -d yesterday +%Y-%m-%d
2021-11-05
[root@node1 ~]# date -d last-day +%Y-%m-%d
2021-11-05
2.4、获取n天前、n天后的日期
# n days ago 表示 n 天前的一天
# 1天前,昨天
[root@node1 ~]# date -d "1 days ago" +%Y-%m-%d
2021-11-05
# 15天前的日期
[root@node1 ~]# date -d "15 days ago" +%Y-%m-%d
2021-10-22
# n 为负数,表示 n 天后的一天
# 15天后的日期
[root@node1 ~]# date -d "-15 days ago" +%Y-%m-%d
2021-11-21
2.5、获取下个月、上个月的今天日期
[root@node1 ~]# date -d next-month +%F
2021-12-06
[root@node1 ~]# date -d last-month +%F
2021-10-06
3、应用
需求:备份昨日的日志文件。
3.1、新建备份脚本
#!/bin/sh
dates=$(date -d yesterday +%Y%m%d)
echo "back date: $dates"
tar -Pzcf /root/backup/$dates.tar.gz /usr/bigdata/logs/$dates/*
3.2、配置 crontab 文件
定时执行备份日志文件的脚本,这里为了方便展示效果,设置每2分钟执行一次。
crontab -e
# 定时执行备份脚本
*/2 * * * * /root/backup_logs.sh
3.3、查看备份目录文件
![0](https://img2023.cnblogs.com/blog/1680081/202311/1680081-20231106193135243-753185884.png)