大家好,欢迎来到IT知识分享网。
文章目录
- date 命令学习
-
- 1. 命令简介
- 2. 语法参数
- 3. 使用案例
-
- :arrow_right: 星期名缩写 %a
- :arrow_right: 星期名全写 %A
- :arrow_right: 月名缩写 %b
- :arrow_right: 月名全称 %B
- :arrow_right: 日期和时间 %c
- :arrow_right: 世纪 %C
- :arrow_right: 按日计的日期 %d
- :arrow_right: 按日计的日期 %D
- :arrow_right: 按日计的日期 %e
- :arrow_right: 完整日期格式 %F
- :arrow_right: ISO-8601 格式年份的最后两位 %g
- :arrow_right: 显示月份 %h
- :arrow_right: 小时(00-23) %H
- :arrow_right: 小时(00-12) %I
- :arrow_right: 按年计的日期(001-366) %j
- :arrow_right: 小时,格式为( 0..23) %k
- :arrow_right: 小时,格式为 ( 1..12) %l
- :arrow_right: 月 (01..12) %m
- :arrow_right: 分钟 (00..59) %M
- :arrow_right: 纳秒 %N
- :arrow_right: 上午或者下午 %p %P
- :arrow_right: 显示文件最后修改时间
- :arrow_right: 12 小时时钟时间 %r
- :arrow_right: 24 小时时间的时和分 %R
- :arrow_right: 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 %s
- :arrow_right: 秒(00-60) %S
- :arrow_right: 时间 %T
- :arrow_right: 星期 %u
- :arrow_right: 一年中的第几周 %U
- :arrow_right: ISO-8601 格式规范下的一年中第几周 %V
- :arrow_right: 一星期中的第几日 %w
- :arrow_right: 一年中的第几周 %W
- :arrow_right: 日期描述 %x
- :arrow_right: 时间描述 %X
- :arrow_right: 年份最后两位数位 %y
- :arrow_right: 年份 %Y
- :arrow_right: 数字时区 %z
- :arrow_right: 按字母表排序的时区缩写 %Z
date 命令学习
1. 命令简介
在显示方面使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记。在备份文件的时候我们常结合此命令生成当前日期和时间的文件名。格式符前面以
+加号开头,若是不以加号作为开头,则表示要设定时间,而时间格式为MMDDhhmm[[CC]YY][.ss],其中MM为月份,DD为日,hh为小时,mm为分钟,CC为年份前两位数字,YY为年份后两位数字,ss为秒数。
2. 语法参数
2.1 使用语法
用法:date [选项]... [+格式] 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] Display the current time in the given FORMAT, or set the system date. Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format. TIMESPEC='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the indicated precision. -r, --reference=文件 显示文件指定文件的最后修改时间 -R, --rfc-2822 以RFC 2822格式输出日期和时间 例如:2006年8月7日,星期一 12:34:56 -0600 --rfc-3339=TIMESPEC output date and time in RFC 3339 format. TIMESPEC='date', 'seconds', or 'ns' for date and time to the indicated precision. Date and time components are separated by a single space: 2006-08-07 12:34:56-06:00 -s, --set=STRING set time described by STRING -u, --utc, --universal print or set Coordinated Universal Time (UTC) --help 显示此帮助信息并退出 --version 显示版本信息并退出
2.2 说明
| 参数 | 说明 |
|---|---|
| -d, –date=STRING | 显示由STRING描述的时间,而不是“现在”,示例:date -d "-7 day" +%Y-%m-%d 显示七天前的日期 |
| -f, –file=DATEFILE | 使用 -f 参数进行多行输出,示例:参考使用案例 |
| -I[TIMESPEC] | ISO 8601格式的输出日期/时间,示例:参考使用案例 |
| -r, –reference=文件 | 显示指定文件的最后修改时间,示例:参考使用案例 |
| -R, –rfc-2822 | 以RFC 2822格式输出日期和时间,示例:参考使用案例 |
| -s, –set=STRING | 设置系统时间 |
| –version | 显示版本编号 |
| -u, –utc, –universal | 打印或设置协调世界时(UTC) |
| –help | 帮助 |
2.3 参数说明
使用格式:
date +[参数]
| 参数 | 说明 |
|---|---|
| %% | 输出结果为一个 % 字符 |
| %a | 当前locale 的星期名缩写(例如: 日,代表星期日) |
| %A | 当前locale 的星期名全称 (如:星期日) |
| %b | 当前locale 的月名缩写 (如:一,代表一月) |
| %B | 当前locale 的月名全称 (如:一月) |
| %c | 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25) |
| %C | 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20) |
| %d | 按日计的日期(例如:01) |
| %D | 按日计的日期;等于%m/%d/%y |
| %e | 按日计的日期,添加空格,等于%_d |
| %F | 完整日期格式,等价于 %Y-%m-%d |
| %g | ISO-8601 格式年份的最后两位 (参见%G) |
| %G | ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用 |
| %h | 显示月份,等于%b |
| %H | 小时(00-23) |
| %I | 小时(00-12) |
| %j | 按年计的日期(001-366) |
| %k | 小时,格式为( 0…23); 和 %_H 相同 |
| %l(小写L) | 小时,格式为 ( 1…12); 和 %_I(大写i) 相同 |
| %m | 月 (01…12) |
| %M | 分钟 (00…59) |
| %n | 换行 |
| %N | 纳秒(000000000-) |
| %p | 当前locale 下的”上午”或者”下午”,未知时输出为空 |
| %P | 与%p 类似,但是输出小写字母 |
| %r | 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午) |
| %R | 24 小时时间的时和分,等价于 %H:%M |
| %s | 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 |
| %S | 秒(00-60) |
| %t | 输出制表符 Tab |
| %T | 时间,等于%H:%M:%S |
| %u | 星期,1 代表星期一 |
| %U | 一年中的第几周,以周日为每星期第一天(00-53) |
| %V | ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53) |
| %w | 一星期中的第几日(0-6),0 代表周一 |
| %W | 一年中的第几周,以周一为每星期第一天(00-53) |
| %x | 当前locale 下的日期描述 (如:12/31/99) |
| %X | 当前locale 下的时间描述 (如:23:13:48) |
| %y | 年份最后两位数位 (00-99) |
| %Y | 年份 |
| %z | 数字时区(例如,+0800) |
| %😒 | 数字时区(例如,+08:00) |
| %:😒 | 数字时区(例如,+08:00:00) |
| %::😒 | 数字时区带有必要的精度 (例如,+08) |
| %Z | 按字母表排序的时区缩写 (例如,CST) |
3. 使用案例
➡️ 星期名缩写 %a
[root@104 ~]# date +%a 二
➡️ 星期名全写 %A
[root@104 ~]# date +%A 星期二
➡️ 月名缩写 %b
[root@104 ~]# date +%b 1月
➡️ 月名全称 %B
[root@104 ~]# date +%B 一月
➡️ 日期和时间 %c
[root@104 ~]# date +%c 2024年01月09日 星期二 10时14分46秒
➡️ 世纪 %C
年份除100后去整
注:
date +%C得到的结果通常为省略当前年份的后两位数字,示例:2024年,得到的结果就是20,但是 2024 年应该是 21 世纪,所以个人感觉这个参数没有太大的使用意义。
# 年份除100后去整 [root@104 ~]# date +%C 20
➡️ 按日计的日期 %d
[root@104 ~]# date +%d 09
➡️ 按日计的日期 %D
等于
date +%m/%d/%y
[root@104 ~]# date +%D 01/09/24
➡️ 按日计的日期 %e
添加空格,等于
%_d,将09中的0换成了空格
[root@104 ~]# date +%e 9 [root@104 ~]# date +%_d 9 # 和 %d 类似 [root@104 ~]# date +%d 09
➡️ 完整日期格式 %F
完整日期格式,等价于
%Y-%m-%d
[root@104 ~]# date +%F 2024-01-09
➡️ ISO-8601 格式年份的最后两位 %g
ISO-8601 格式年份的最后两位 (参见%G)
ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
[root@104 ~]# date +%g 24 [root@104 ~]# date +%G 2024
➡️ 显示月份 %h
显示月份,等于
%b
[root@104 ~]# date +%h 1月
➡️ 小时(00-23) %H
[root@104 ~]# date +%H 16
➡️ 小时(00-12) %I
[root@104 ~]# date +%I 04
➡️ 按年计的日期(001-366) %j
[root@104 ~]# date +%j 009
➡️ 小时,格式为( 0…23) %k
小时,格式为( 0…23); 和 %_H 相同
[root@104 ~]# date +%k 16 [root@104 ~]# date +%_H 16
➡️ 小时,格式为 ( 1…12) %l
小时,格式为 ( 1…12); 和 %_I(大写i) 相同
[root@104 ~]# date +%l 4 [root@104 ~]# date +%_I 4
➡️ 月 (01…12) %m
和
date +%b类似,date +%b显示中文(一月)或者英文(Jan),date +%m显示数字
[root@104 ~]# date +%m 01
➡️ 分钟 (00…59) %M
[root@104 ~]# date +%M 35
➡️ 纳秒 %N
纳秒(000000000-)
[root@104 ~]# date +%N
➡️ 上午或者下午 %p %P
当前locale 下的”上午”或者”下午”,未知时输出为空,中文模式下大写和小写
p输出内容相同,英文模式下大写p输出小写am或者pm,小写p输出大写AM或者AM
# 小写 p [root@104 ~]# date +%p 下午 [root@104 ~]# date +%p PM # 大写 p [root@104 ~]# date +%P 下午 [root@104 ~]# date +%P pm
➡️ 显示文件最后修改时间
显示指定文件的最后修改时间
[root@localhost data]# date -r test 2024年 04月 19日 星期五 09:51:47 CST [root@localhost data]# touch a.txt test/ [root@localhost data]# date -r test 2024年 04月 19日 星期五 09:52:09 CST
- 扩展
使用
stat命令:stat命令可以显示文件属性的详细信息,比如最近一次访问和修改文件的时间、文件大小等信息,使用起来比较简单,命令后面只需要加上文件名就可以
[root@localhost data]# stat test/ 文件:"test/" 大小:18 块:0 IO 块:4096 目录 设备:fd00h/64768d Inode: 硬链接:2 权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2024-04-19 10:03:49. +0800 最近更改:2024-04-19 10:04:52. +0800 最近改动:2024-04-19 10:04:52. +0800 创建时间:-
➡️ 12 小时时钟时间 %r
当前locale 下的 12 小时时钟时间 (如:下午 04时41分13秒)
# 中文格式 [root@104 ~]# date +%r 下午 04时41分13秒 # 英文格式 [root@105 ~]# date +%r 05:05:35 PM
➡️ 24 小时时间的时和分 %R
[root@104 ~]# date +%R 17:06
➡️ 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 %s
可以通过这个时间来计算两个时间段之间的差值
[root@104 ~]# date +%s # 计算分,时,日,年 [root@104 ~]# echo $(($(date +%s)/60/60/24/365)) 54 # 计算月 [root@104 ~]# echo $((/60/60/24/365*12)) 648 # 计算时间段差值 [root@104 ~]# echo "BeginTime: "$(date +%s) && BeginTime=$(date +%s) && sleep 10 && echo "EndTime: "$(date +%s) && EndTime=$(date +%s) && echo "TimeDifference="$(($EndTime-$BeginTime)) BeginTime: EndTime: TimeDifference=10
➡️ 秒(00-60) %S
[root@104 ~]# date +%S 50
➡️ 时间 %T
当前时间,等于
%H:%M:%S
[root@104 ~]# date +%T 17:20:20
➡️ 星期 %u
星期,1 代表星期一
[root@104 ~]# date +%u 2
➡️ 一年中的第几周 %U
一年中的第几周,以周日为每星期第一天(00-53)
[root@104 ~]# date +%U 01
➡️ ISO-8601 格式规范下的一年中第几周 %V
ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53),在国内使用时需要使用以周一为每星期第一天来计算,和
date +%W结果相同
[root@104 ~]# date +%V 02
➡️ 一星期中的第几日 %w
一星期中的第几日(0-6),0 代表周一,和
date +%u结果相同
[root@104 ~]# date +%w 2
➡️ 一年中的第几周 %W
一年中的第几周,以周一为每星期第一天(00-53),和
date +%V结果相同
[root@104 ~]# date +%W 02
➡️ 日期描述 %x
# 中文格式 [root@104 ~]# date +%x 2024年01月09日 # 英文格式 [root@105 ~]# date +%x 01/09/2024
➡️ 时间描述 %X
# 中文格式 [root@104 ~]# date +%X 17时31分30秒 # 英文格式 [root@105 ~]# date +%X 05:31:28 PM
➡️ 年份最后两位数位 %y
年份最后两位数位 (00-99)
[root@105 ~]# date +%y 24
➡️ 年份 %Y
[root@104 ~]# date +%Y 2024
➡️ 数字时区 %z
[root@104 ~]# date +%z +0800 [root@104 ~]# date +%:z +08:00 [root@104 ~]# date +%::z +08:00:00 [root@104 ~]# date +%:::z +08
➡️ 按字母表排序的时区缩写 %Z
[root@104 ~]# date +%Z CST
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118076.html