每日一SHELL (7) 时间日期

读取日期
$ date
2015年 12月 02日 星期三 22:33:00 CST

输出会跟据当前系统设定(时区、语言、日期格式)进行格式化。

格式化输出

例如:

$ date +%s
1449067035

这是打印 UNIX 时间,其他格式选项可参照 man date

日期转换

如果按照上面的格式化输出,采用的时间是当前时间,我们可以通过 --date 参数输入一个字符串作为时间,然后通过格式化字符串输出,以达到转换的效果:

$ date --date "1949-10-01" +%A
星期六

例如上面就可以知道建国日是星期几。

多个参数格式化

"" 界定,以加号 + 开头。

$ date "+%Y-%m-%d"
2015-12-02
设置日期和时间

使用 -s 选项,输入格式化的字符串,系统会智能识别。

date -s "20 June 2009 11:01:22"
用于检查命令执行的时间
#!/bin/bash
start=$(date +%s)
# do sth...
sleep 30
# do sth...
end=$(date +%s)
differences=$(( end - start ))
echo Time taken to execute commands is $differences seconds.

也可以使用 time 加上可执行的脚本来得到执行时间:

time ./script.sh
脚本延时:使用 sleep

举个复杂的例子,请自行测试并解释行为:

#!/bin/bash
# Filename: sleep.sh
echo -n Count:
tput sc

count=0;
while true;
do
    if [ $count -lt 40 ];
    then
        let count++;
        sleep 1;
        tput rc
        tput ed
        echo -n $count;
    else exit 0;
    fi  
done

温习一下终端操作:

  • tput sc: 记录当前光标位置;
  • tput rc: 恢复记录的光标位置;
  • tput ed: 将当前光标到行末的内容清除;

【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/12/bash-shell-7.html【每日一SHELL (7) 时间日期】

发表评论

电子邮件地址不会被公开。 必填项已用*标注