shell之date

Linux date命令详解

date

date后边可以接两个参数,一个是[选项],一个是[格式],都是选填。
[选项][格式]的顺序可前可后。
[选项]为空,则为当前时间;
[格式]为空,则为默认格式。如下:

$ date
Sat Jan 12 22:12:50 CST 2019

通过date --h得到帮助如下:

$ date --h
Usage: date [OPTION]... [+FORMAT]
 

其中,[选项]中,重点是-d, --date=STRING。以下解析。

-d,–date参数

三种参数接法

  • -d str
  • --date str
  • --date=str
    其中,str通常可以有两种格式
  • 时间字符串格式,如 2010/08/092010-10-182010-10-18 00:00:00
  • 以当前时间做计算的格式,如+1 day(s)-1 day(s)1 day(s) ago等,复数单数均可。
    其中注意
  1. date后面每个空格之间都是一个独立的参数,分别看做整体,用双引号格式能看的更为清楚,如date "+%Y%m%d %H:%M:%S" -d "+1 hour"
    • -d“-2 day 20111111”指定输出内容
    • “+%Y%m%d”是一个整体,控制输出格式,+后面无空格
  2. 参数顺序无关
    • date -d "-2 day 20111111" +%Y%m%d
    • date +%Y%m%d -d "-2 day 20111111"
    • date +%Y%m%d -d "20111111 -2 day"
      都一样
  3. 独立参数有无双引号都行
    date -d 2014-02-13 +%s和date -d"2014-02-13" "+%s"是一样的,还有date -d’2014-02-13’ +%s

时间字符串的转化:
用date 的输出格式控制实现,但“月日年”和“时分秒”必须分开处理,否则会无法识别。such as
2013-10-30 20:12:59 或者 20131030 20:12:59
注意:
1,二者用空格分割;
2,年月日作为整体,格式十分灵活,可以随意写。但时分秒必须用冒号”:”分开,否则无法识别。
更多参考:https://blog.youkuaiyun.com/longshenlmj/article/details/14165845

举例:

date -d "-1 year" 
date -d "-1 month" 
date -d "-1 day" 
date -d "-1 hour" 
date -d "-1 minute" 

[格式]

参考:https://www.cnblogs.com/kimbo/p/7102203.html
常用格式:

%Y  年份2019
%y  年份19
%m  月份01
%d  天13
%H  24制小时
%M  分钟
%S  秒
%F  等价于%Y-%m-%d
%T  等价于%H:%M:%S

如:

$ date -d "-1 day" "+%Y-%m-%d"
2019-01-11

### Shell中的`date`命令详解 #### 基础语法 `date` 是 Linux/Unix 系统中用于显示或设置系统的日期和时间的一个重要工具。其基本语法如下: ```bash date [选项] [+格式] ``` - `+格式` 参数允许用户自定义输出的时间格式。 - 如果不带任何参数运行 `date`,它会默认打印当前的系统时间和日期。 例如,直接输入以下命令可以查看当前系统时间: ```bash date ``` 这将返回类似于下面的结果[^1]: ``` Thu Oct 28 16:56:57 CST 2021 ``` #### 时间格式化 通过指定不同的 `%` 开头的控制标志,可以定制输出的时间格式。以下是常用的几个例子: | 控制符 | 描述 | |--------|--------------------------| | `%Y` | 年份 (四位数) | | `%m` | 月份 (两位数, 01–12) | | `%d` | 日子 (两位数, 01–31) | | `%H` | 小时 (24小时制, 00–23) | | `%M` | 分钟 (00–59) | | `%S` | 秒 (00–60) | 如果多个控制标志间有空格,则需要用双引号包裹整个字符串来防止解析错误。例如: ```bash date +"%H:%M %S" ``` 此命令将以 “时:分 秒” 的形式展示当前时间。 #### 设置系统时间 除了查询功能之外,`date` 还能用来修改系统时间(需管理员权限)。例如要将系统时间设为 2023年1月1日 下午两点整,可执行下列指令: ```bash sudo date --set="2023-01-01 14:00:00" ``` 完成调整后建议同步更新硬件时钟以保持一致性: ```bash sudo hwclock --systohc ``` 以上操作确保即使重启计算机也能保留最新设定好的时间数据[^3]。 #### 实际应用案例 在实际开发运维场景下,经常利用 `date` 结合其他命令实现自动化任务调度等功能。比如创建按天命名的日志文件或者定期备份数据库等操作都离不开它的支持[^2]。 ```bash #!/bin/bash backup_dir="/path/to/backups/" filename=$(date "+%A").sql mysqldump my_database > "$backup_dir$filename" ``` 上述脚本片段演示了怎样依据一周七天分别保存不同名称的数据副本,并且能够循环替换旧版本达到节省存储空间的目的。 ### 注意事项 对于普通用户来说可能没有足够的权限去改变服务器上的真实时间戳;另外,在跨平台移植过程中需要注意某些发行版可能存在细微差异,请查阅官方手册获取最权威解释(`man date`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值