用于生成备份文件的例子
fp=/etc/samba/smb.conf ; cp $fp $fp.$(date +%0y%0m%0d%0H%0M%0S).bak
带纳秒ns
fp=/etc/samba/smb.conf ; cp $fp $fp.$(date +%0y%0m%0d%0H%0M%0Sns%0N).bak
fp=/etc/samba/smb.conf ; cp $fp $fp.$(date +%0y%0m%0d%0H%0M%0S--%0N).bkup
linux的shell的date命令的加号"+"的作用
1是输出 , 2是填充方式,以0填充补位
第一个
+
表示格式化输出字符串, 后接表达式加号后面的加号,在格式化表达式中的加号
+
, 表示以0填充补位, 比如1月会填充为01月, 也可以是0
, 也可以没有,因为默认效果如同0
例如
date "+%y%m%d%H%M%S"
date +"%y%m%d%H%M%S"
date +%+y%m%d%H%M%S
date +%0y%m%d%H%M%S
date +%+y%+m%+d%H%M%S
date +%0y%0m%0d%H%M%S
date +%+y%+m%+d%+H%M%S
date +%0y%0m%0d%0H%M%S
date +%+y%+m%+d%+H%+M%S
date +%0y%0m%0d%0H%0M%S
date +%+y%+m%+d%+H%+M%+S
date +%0y%0m%0d%0H%0M%0S
上面的👆这些是等效果的
左边第一个加号"+
"表示
测试执行z@n100-1:~$ date "+%y%m%d%H%M%S" date +"%y%m%d%H%M%S" date +%+y%m%d%H%M%S date +%0y%m%d%H%M%S date +%+y%+m%+d%H%M%S date +%0y%0m%0d%H%M%S date +%+y%+m%+d%+H%M%S date +%0y%0m%0d%0H%M%S date +%+y%+m%+d%+H%+M%S date +%0y%0m%0d%0H%0M%S date +%+y%+m%+d%+H%+M%+S date +%0y%0m%0d%0H%0M%0S 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155 240721060155
+
在日期运算中标示正号,可以省略
例如: 一秒后的写法date --date "1second" date --date "+1second" date --date "1 second" date --date "+1 second"
格式化中的占位符
%%
字面上的百分号 %%a
当前区域设置的星期几的缩写(例如:日)%A
当前区域设置的星期几的全称(例如:星期日)%b
当前区域设置的月份缩写(例如:1月)%B
当前区域设置的月份全称(例如:一月)%c
当前区域设置的日期和时间(例如:2005年03月03日 星期四 23时05分25秒)%C
世纪(指年份的最高两位);类似 %Y,但省略最后两位数(例如:20)%d
日(例如:01)%D
日期;等于 %m/%d/%y%e
日,以空格填充;等于 %_d%F
完整的日期;等于 %+4Y-%m-%d%g
ISO 周数年的最后两位(参见 %G)%G
ISO 周数年(参见 %V);一般只和 %V 一起使用%h
等于 %b%H
小时 (00…23)%I
小时 (01…12)%j
一年中的第几日 (001…366)%k
小时,以空格填充 ( 0…23);等于 %_H%l
小时,以空格填充 ( 1…12);等于 %_I%m
月 (01…12)%M
分钟 (00…59)%n
换行%N
纳秒 (000000000…999999999)%p
当前区域设置中 AM 或 PM 的等价说法(“上午” 或 “下午”);未知则为空%P
类似 %p,但使用小写%q
季度 (1…4)%r
当前区域设置中 12 小时制钟表时间(例如:下午 11时11分04秒)%R
24 小时制的小时和分钟;等于 %H:%M%s
自 Epoch (1970-01-01 00:00 UTC) 以来的秒数%S
秒 (00…60)%t
制表符%T
时间;等于 %H:%M:%S%u
星期几 (1…7);1 代表星期一%U
一年中的第几周,以周日为每周第一天 (00…53)%V
ISO 周数,以周一为每周第一天 (01…53)%w
星期几 (0…6);0 代表星期日%W
一年中的第几周,以周一为每周第一天 (00…53)%x
当前区域设置的日期表示法(例如:1999年12月31日)%X
当前区域设置的时间表示法(例如:23时13分48秒)%y
年的最后两位 (00…99)%Y
年%z
+hhmm 数字时区(例如:-0400)%:z
+hh:mm 数字时区(例如:-04:00)%::z
+hh:mm:ss 数字时区(例如:-04:00:00)%:::z
数字时区,精度上有必要时加 “:”(例如:-04、+05:30)%Z
字母时区缩写(例如:EDT)
上面这些百分号%
开头的占位符, 百分号%
后可以插入一些字符标志选项, 默认不插入等效插入0, 如 %M
等效%0M
, %S
等效%0S
以下可选的标志可以跟在 “%” 后:
-
(连字符)不填充该字段_
(下划线)以空格填充0
(数字 0)以 0 填充+
以 0 填充,并且在超过四位数的未来年份之前添加 “+” 符号^
如果可能,使用大写字母#
如果可能,使用相反的大小写
一些+
加号格式化输出例子
标准格式
date "+%Y-%m-%d %H:%M:%S"
z@n100-1:~$ date "+%Y-%m-%d %H:%M:%S"
2024-07-21 05:54:17
date "+%Y-%m-%dT%H:%M:%S"
z@n100-1:~$ date "+%Y-%m-%dT%H:%M:%S"
2024-07-21T05:56:33
中文
date +"%Y年 %m月 %d日 星期%a %H时%M分"
[z@3050 ~]$ date +"%Y年 %m月 %d日 星期%a %H时%M分"
2024年 07月 21日 星期日 06时09分
0补位:[无(默认)|0|+], 不补位用连字符(横杆,减号)-
# 0补位
date +"%y%m%d%H%M%S"
date +"%+y%+m%+d%+H%+M%+S"
date +"%0y%0m%0d%0H%0M%0S"
# 不补位
date +"%-y%-m%-d%-H%-M%-S"
结果:
240721062435
240721062435
240721062435
2472162435
# 0补位
date +"%Y年 %m月 %d日 星期%a %H时%M分"
date +"%0Y年 %0m月 %0d日 星期%0a %H时%0M分"
# 不补位
date +"%-Y年 %-m月 %-d日 星期%-a %-H时%-M分"
结果:
2024年 07月 21日 星期日 06时25分
2024年 07月 21日 星期日 06时25分
2024年 7月 21日 星期日 6时25分