详解Linux环境shell脚本获取时间的常用命令总结

系统 Linux
前面已经介绍了windows环境关于时间的常用命令总结,今天主要分享下linux环境shell脚本常用的一些获取时间命令。

前面已经介绍了windows环境关于时间的常用命令总结,今天主要分享下linux环境shell脚本常用的一些获取时间命令。

1. 相关概念

Linux的系统时间在shell里是可以直接调用系统变量date的,如:

  1. 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 
  2. 获取昨天时期:`date -d yesterday +%Y%m%d` 也可以写成`date -d -1day +%Y%m%d` 
  3. 获取前天日期:`date -d -2day +%Y%m%d` 
  4. 获取10天前的日期:`date -d -10day +%Y%m%d` 
  5. 或n天前的: `date -d "n days ago" +%y%m%d` 
  6. 获取明天日期:`date -d tomorrow +%y%m%d` 
  7. 获取上个月日期:date -d last-month +%Y%m  
  8. 获取下个月日期:date -d next-month +%Y%m 

至于你需要什么样的日期时间格式,就需要应用相关的时间域参数来实现了:

相关时间域如下:

  1. % H 小时(00..23) 
  2. % I 小时(01..12) 
  3. % k 小时(0..23) 
  4. % l 小时(1..12) 
  5. % M 分(00..59) 
  6. % p 显示出AM或PM 
  7. % r 时间(hh:mm:ss AM或PM),12小时 
  8. % s 从1970年1月1日00:00:00到目前经历的秒数 
  9. % S 秒(00..59) 
  10. % T 时间(24小时制)(hh:mm:ss) 
  11. % X 显示时间的格式(%H:%M:%S) 
  12. % Z 时区 日期域 
  13. % a 星期几的简称( Sun..Sat) 
  14. % A 星期几的全称( Sunday..Saturday) 
  15. % b 月的简称(Jan..Dec) 
  16. % B 月的全称(January..December) 
  17. % c 日期和时间( Mon Nov 8 14:12:46 CST 1999) 
  18. % d 一个月的第几天(01..31) 
  19. % D 日期(mm/dd/yy) 
  20. % h 和%b选项相同 
  21. % j 一年的第几天(001..366) 
  22. % m 月(01..12) 
  23. % w 一个星期的第几天(0代表星期天) 
  24. % W 一年的第几个星期(00..53,星期一为第一天) 
  25. % x 显示日期的格式(mm/dd/yy) 
  26. % y 年的最后两个数字( 1999则是99) 
  27. % Y 年(例如:1970,1996等) 
  28. %F 输出日期为2019-10-20 这种格式的日期 

注意:只有超级用户才有权限使用date命令设置时间,一般用户只能使用date命令显示时间。

2. 获取时间脚本--DateTime.sh

  1. #!/bin/bash 
  2. echo "===================================================" 
  3. echo "show linux original format date and time:" 
  4. echo DateTime: $(date) 
  5. echo "===================================================" 
  6. echo "show date time like format: YYYY-MM-DD HH:MM:SS" 
  7. NOW_DATE_TIME=$(date "+%Y-%m-%d %H:%M:%S") 
  8. echo $NOW_DATE_TIME 
  9. echo "===================================================" 
  10.   
  11. echo "show date time like format: YYYYMMDD-HHMMSS" 
  12. NOW_TIME=$(date "+%Y%m%d-%H%M%S") 
  13. echo $NOW_TIME 
  14. echo "===================================================" 
  15.   
  16. echo "show last year:" 
  17. LAST_YEAR=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 years"
  18. echo $LAST_YEAR 
  19. echo "===================================================" 
  20.   
  21. echo "show next year:" 
  22. NEXT_YEAR=$(date "+%Y-%m-%d %H:%M:%S" --date="1 years"
  23. echo $NEXT_YEAR 
  24. echo "===================================================" 
  25.   
  26. echo "show last month:" 
  27. LAST_MONTH=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 months"
  28. echo $LAST_MONTH 
  29. echo "===================================================" 
  30.   
  31. echo "show next month:" 
  32. NEXT_MONTH=$(date "+%Y-%m-%d %H:%M:%S" --date="1 months"
  33. echo $NEXT_MONTH 
  34. echo "===================================================" 
  35.   
  36. echo "show last day:" 
  37. LAST_DAY=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 days"
  38. echo $LAST_DAY 
  39. echo "===================================================" 
  40.   
  41. echo "show next day:" 
  42. NEXT_DAY=$(date "+%Y-%m-%d %H:%M:%S" --date="1 days"
  43. echo $NEXT_DAY 
  44. echo "===================================================" 
  45.   
  46. echo "show last hour:" 
  47. LAST_HOUR=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 hours"
  48. echo $LAST_HOUR 
  49. echo "===================================================" 
  50.   
  51. echo "show next hour:" 
  52. NEXT_HOUR=$(date "+%Y-%m-%d %H:%M:%S" --date="1 hours"
  53. echo $NEXT_HOUR 
  54. echo "===================================================" 
  55.   
  56. echo "show last minute:" 
  57. LAST_MINUTE=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 minutes"
  58. echo $LAST_MINUTE 
  59. echo "===================================================" 
  60.   
  61. echo "show next minute:" 
  62. NEXT_MINUTE=$(date "+%Y-%m-%d %H:%M:%S" --date="1 minutes"
  63. echo $NEXT_MINUTE 
  64. echo "===================================================" 
  65.   
  66. echo "show last second:" 
  67. LAST_SECOND=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 seconds"
  68. echo $LAST_SECOND 
  69. echo "===================================================" 
  70.   
  71. echo "show next second:" 
  72. NEXT_SECOND=$(date "+%Y-%m-%d %H:%M:%S" --date="1 seconds"
  73. echo $NEXT_SECOND 
  74. echo "===================================================" 

详解linux环境shell脚本获取时间的常用命令总结

运行结果:

详解linux环境shell脚本获取时间的常用命令总结

详解linux环境shell脚本获取时间的常用命令总结

详解linux环境shell脚本获取时间的常用命令总结

3. 练习脚本

在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。

  1. #/bin/bash 
  2. #filebak 
  3. bakdir="/root/bak/" 
  4. filename="`date +%y%m%d`_etc.tar.gz" 
  5. ​ 
  6. if [ ! -x "$bakdir" ];then 
  7.  mkdir $bakdir 
  8. fi 
  9. ​ 
  10. cd $bakdir 
  11. tar cvfz $filename /etc 
  12. ​ 
  13. ​ 
  14. #使用crontab -e 命令添加定时任务: 
  15. 0 1 * * * /bin/sh /usr/bin/fileback 
责任编辑:赵宁宁 来源: 今日头条
相关推荐

2020-09-28 15:14:31

Linux常用命令实用命令

2009-12-22 14:47:24

Linux常用命令

2023-10-31 16:17:42

2022-05-05 08:08:55

Podman命令Linux

2014-07-25 10:55:36

Linux命令

2010-04-21 10:19:40

Unix Shell

2020-10-12 01:11:35

vimLinux命令

2017-03-01 17:27:32

LinuxShell命令

2015-07-28 10:21:23

git命令

2023-08-28 10:49:13

Linux系统

2023-12-20 14:38:50

Linux磁盘IO

2017-09-10 16:41:32

ADB命令程序员

2014-08-18 09:49:46

Linux

2014-08-15 10:47:49

Linux命令

2022-05-30 00:16:47

Python技巧pip

2010-04-02 17:37:15

Oracle rman

2011-08-16 14:04:44

思科交换机常用命令

2011-01-19 17:00:09

Postfix常用命令

2014-01-02 09:57:56

PostgreSQL命令

2011-03-16 10:07:00

点赞
收藏

51CTO技术栈公众号