shell时间获取及延时

2019-08-18  本文已影响0人  迷鹿milu

时间获取及延时

1 获取时间

纪元时:在系统内部,日期被存储为一个整数,其取值为自1970年1月1日0时0分0秒起,所流失的秒数

1.1 获取时间

date

timedatectl

1.2 打印纪元时

date +%s        #打印纪元时

date --date "Wed Aug 14 17:27:47 CST 2019" +%s          #将某个时间转化为纪元时

date --date "Aug 14 17:27:47 CST 2019" +%A          #知道某个时间是星期几

1.3 格式化输出的时间

参数 描述
%% 显示字符%
%a 星期几的缩写(Sun..Sat)
%A 星期几的完整名称(Sunday...Saturday)
%b/%h 月份的缩写(Jan..Dec)
%B 月份的完整名称(January..December)
%c 日期与时间。只输入date指令也会显示同样的结果
%C 世纪(年份除100后去整) [00-99]
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%e 一个月的第几天 ( 1..31)
%F 日期,同%Y-%m-%d
%g 年份(yy)
%G 年份(yyyy)
%H 小时(00..23)
%I 小时(01..12)
%j 一年的第几天(001..366)
%k 小时( 0..23)
%l 小时( 1..12)
%m 月份(01..12)
%M 分钟(00..59)
%n 换行
%N 纳秒(000000000..999999999)
%p AM or PM
%P am or pm
%r 12小时制时间(hh:mm:ss [AP]M)
%R 24小时制时间(hh:mm)
%s 从00:00:00 1970-01-01 UTC开始的秒数
%S 秒(00..60)
%t 制表符
%T 24小时制时间(hh:mm:ss)
%u 一周的第几天(1..7); 1 表示星期一
%U 一年的第几周,周日为每周的第一天(00..53)
%V 一年的第几周,周一为每周的第一天 (01..53)
%w 一周的第几天 (0..6); 0 代表周日
%W 一年的第几周,周一为每周的第一天(00..53)
%x 日期(mm/dd/yy)
%X 时间(%H:%M:%S)
%y 年份(00..99)
%Y 年份(1970…)
%z RFC-2822 风格数字格式时区(-0500)
%Z 时区(e.g., EDT), 无法确定时区则为空
# date '+%Y-%m-%d'
2017-01-29
# date +%Y-%m-%d
2017-01-29
# date +%m/%d/%y
01/29/17
# date "+%Y-%m-%d %H:%M:%S"
2017-01-29 10:57:02

  实际应用(shell中时间的计算必须要先将时间格式化成字符串):

# date -d now
Sun Jan 29 10:46:07 CST 2017
# date -d 'next monday'
Mon Jan 30 00:00:00 CST 2017
# date -d yesterday +%Y%m%d
20170128

1.4 测量一组命令所消耗的时间

#!/bin/bash
start=$(date +%s)
commands;
statements;
end=$(date +%s)
diffenence=$((end - start))
echo time taken to execute commands is $diffenence seconds.

time 命令是统计时间的最简单方式

延时

#!/bin/bash
echo count:
tput sc
#循环40秒
for count in `seq 0 40`
do
    tput rc
    tput ed
    echo -n $count
    sleep 1
done

变量使用了seq命令生成一系列数字
使用tput sc存储光标位置
通过tput rc恢复光标位置
每次循环中,通过tput rc恢复光标位置,使用tput ed清除从光标到行尾之间的所有内容,然后在终端中打印出新的count值,sleep可以使脚本在每次的循环中延迟1秒

上一篇下一篇

猜你喜欢

热点阅读