Shell内置变量 - date

发布时间 2023-11-06 19:37:24作者: 无虑的小猪

  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