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值可以被清楚并写入新值。