Linux中的date命令
在本教程中,我们将介绍'date'命令的基础知识。
'date'命令显示或者设置系统日期。
它最常用于以不同格式打印日期和时间,并计算将来和过去的日期。
使用Linux的'date'命令
“ date”命令的语法如下:
date [OPTION]... [+FORMAT]
要使用默认格式显示当前系统时间和日期,请在不使用任何选项和参数的情况下调用命令:
date
输出包括星期几,月份,月份中的某天,时间,时区和年份:
Sat Jun 1 14:31:01 CEST 2019
日期格式选项
可以使用一系列格式控制字符和“ +”符号来格式化“ date”命令的输出。
格式控件以“%”符号开头,并由其值代替。
date +"Year: %Y, Month: %m, Day: %d"
'%Y'字符将替换为年份,'%m'将替换为月份,'%d'将替换为月份的日期:
Year: 2019, Month: 06, Day: 02
这是另一个示例:
date "+DATE: %D%nTIME: %T"
DATE: 06/02/19 TIME: 01:47:04
下面是一些最常见的格式字符的一小部分:
- '%a'-语言环境的简短工作日名称(例如,星期一)
- '%A'-语言环境的缩写的完整工作日名称(例如,星期一)
- '%b'-语言环境的缩写月份名称(例如,Jan)
- '%B'-语言环境的长月份缩写名称(例如,一月)
- '%d'-月份中的某天(例如01)
- '%H'-小时(00..23)
- '%I'-小时(01..12)
- '%j'-一年中的某天(001..366)
- '%m'-月(01..12)
- '%M'-分钟(00..59)
- '%S'-秒(00..60)
- '%u'-星期几(1..7)
- '%Y'-全年(例如,2019年)
要获取所有格式选项的完整列表,请在终端中运行“ date --help”或者“ man date”。
日期字串
'-d'选项允许我们在特定日期进行操作。
我们可以将日期指定为易于理解的日期字符串,如下所示:
date -d "2010-02-07 12:10:53"
Sun Nov 7 12:10:53 CET 2010
使用自定义格式:
date -d '16 Dec 1974' +'%A, %d %B %Y'
Monday, 16 December 1974
日期字符串接受“明天”,“星期五”,“上周五”,“下周五”,“下个月”,“下周”等值。
date -d "last week"
Sat Jan 25 14:31:42 CEST 2019
我们还可以使用日期字符串选项显示不同时区的本地时间。
例如,要显示下周一星期一在澳大利亚东海岸的当地时间6:30,我们可以输入:
date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Sun Jun 2 22:30:00 CEST 2019
覆盖时区
'date'命令返回默认系统时区中的日期。
要使用其他时区,请将环境变量“ TZ”设置为所需的时区。
例如,要显示澳大利亚墨尔本时间,我们可以输入:
TZ='Australia/Melbourne' date
Sat Jun 1 22:35:10 AEST 2019
要列出所有可用时区,可以在“/usr/share/zoneinfo”目录中列出文件,也可以使用“ timedatectl list-timezones”命令。
时代转换器
'date'命令可以用作纪元转换器。
纪元(Unix时间戳)是自1970年1月1日UTC时间00:00:00起经过的秒数。
要打印从纪元到当前日期的秒数,请使用“%s”格式控件调用“日期”:
date +%s
1559393792
要将自纪元以来的秒转换为日期,请将秒设置为以'@'开头的日期字符串:
date -d @1234567890
Sat Nov 14 00:31:30 CET 2009
与其他命令一起使用'date'
“ date”命令最常用于创建包含当前时间和日期的文件名。
以下命令将以以下格式“ database_name-20190601.sql”创建一个Mysql备份文件。
mysqldump database_name > database_name-$(date +%Y%m%d).sql
我们还可以在Shell脚本中使用“日期”命令。
在下面的示例中,我们将“ date”的输出分配给“ date_now”变量:
date_now=$(date "+%F-%H-%M-%S") echo $date_now
2019-06-01-15-02-27
显示文件的最后修改时间
带有“ -r”选项的“ date”命令显示文件的最后修改时间。
例如:
date -r /etc/hosts
Tue May 24 11:11:48 CEST 2016
如果要修改文件时间戳,请使用“ touch”命令。
设置系统时间和日期
不建议使用'date'命令手动设置系统时间和日期,因为在大多数Linux发行版中,系统时钟是使用'ntp'或者'systemd-timesyncd'服务进行同步的。
但是,如果要手动设置系统时钟,则可以使用'--set ='选项。
例如,如果要将日期和时间设置为2019年6月1日下午5:30,则应输入:
date --set="20190601 17:30"