小试牛刀-1.9获取终端信息1.10获取、设置日期和延时

tput和stty是两款终端处理工具

1)获取终端的行数和列数

tput cols

tput lines

2)打印出当前终端名

tput longname

3)将光标移动到坐标(100,100)处

tput cup 100 100

4)设置终端背景颜色

tput setb n (n可以在0到7之间取值)

5)设置文本景色

tput setf n)

n可以是0到7之间取值

6)设置文本样式为粗体

tput bold

7)设置下划线的起止

tput smul

tput rmul

8)删除从当前光标位置到行尾的所有内容

tput ed

9)在输入密码时,不应该显示输入内容,实现:

#!/bin/sh

#Filename:passwd.sh

echo -e "Enter password"

stty -echo

read passwd

stty echo

echo 

echo $password read

选项-echo禁止将输出发送到终端,而选项echo则允许发送输出。

1.10获取、设置日期和延时

许多应用程序需要以不同的格式打印日期、设置日期和时间、根据日期和时间执行操作。延时通常用于在程序执行过程中提供一段等待时间。

在类unix系统中,日期被存储成一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起所流逝的秒数;这种计时方式称为纪元时或unix时间。

1)读取日期

$ date

2)打印纪元时

$ date +%s

如何将日期串中得到对应的纪元时:

$ date --date "Thu Nov 18 08:07:21 IST 2010" +%s

选项--date用于提供日期串作为输入。但我们可以使用任意的日期格式化选项来打印输出。将日期串作为输入能够用来获知给定的日期是星期几。

$ date --date "Jan 20 2001" +%A

Saturday

3)用格式串结合+作为date命令的参数,可以按照你的选择打印出对应格式的日期。

$ date "+%d %B %Y"

20 May 2010

4)设置日期和时间

date -s "格式化的日期字符串"

eg:date -s "21 June 2009 11:01:22"

5)有时候需要检查一串命令所花费的时间

#!/bin/bash

#Filename:time_take.sh

start=$(date +%s)

commands;

statements;

end=$(date+%s)

difference=$((end-start))

echo Time taken to execute commands is $difference seconds

另一种方法是使用time<scriptpath>来得到执行脚本所花费的时间

星期:  %a(Sat);%A(Saturday)

月:%b(Nov);%B(November)

日:%d(31)

固定格式日期(mm/dd/yy):%D(10/18/10)

年:%y(10);%Y(2010)

小时:%I或者%H(08)

分钟:%M(33)

秒:%S(10)

纳秒:%N(78978687686)

UNIX纪元时(一秒为单位):%s(1290049486)

补充内容--延时

为了在脚本中生成延时,可以使用sleep: $sleep no_of_seconds

下面脚本就使用tput和sleep从0开始计数到40

#!/bin/bash

#文件名-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

在上面的例子中,变量count初始化为0,随后每循环一次便增加1.echo语句打印出count的值。我们用tput sc存储光标位置。在每次循环中,通过恢复之前存储的光标位置,在终端中打印出新的count值。恢复光标位置的命令是tput rc。tput ed清楚从当前光标位置到行尾之间的所有内容,使得旧的count值可以被清楚并写入新值。

原文地址:https://www.cnblogs.com/gary-guo/p/6094995.html