- 获取终端信息
编写shell脚本时,免不了处理大量当前终端的相关信息,如行数、列数等。可以使用tput和stty两个工具进行相关处理
tput
1.tput命令将通过terminfo数据库对终端会话进行初始化和操作(terminfo数据库:Unxi系统上用于定义终端和打印机的属性以及功能)
2.光标属性 文本属性
tput clear 清屏 0:黑色 5:洋红色
tput sc 保存当前光标位置 1:蓝色 6:黄色
tput civis 光标不可见 2:绿色 7:白色
tput cnorm 光标可见 3:青色
tput rc 显示输出 4:红色
技巧1 获取终端的行数和列数
tput cols or stty size
tput lines
技巧2 打印当前终端名
tput longname
技巧3 指定移动光标
tput cup 10 10 将光标移动到(10,10)
技巧4 设置终端背景色
tput setb n) n为0~7
技巧5 设置文本前景色
tput setf n) n为0~7
技巧6 设置文本样式为粗体
tput bold
技巧7 设置下划线起止
tput suml
tput ruml
技巧8 删除当前光标到行尾的内容
tput ed)
stty
-a :以容易阅读的方式打印当前所有的配置
-g :以stty可读方式打印当前所有的配置
stty iuclc 开启禁止输出大写 ------- stty -iuclc 关闭
stty olcuc 开启禁止输出小写 ------ stty -olcuc 关闭
stty -echo 禁止输出显示 -------- stty echo 开启
- 获取设置日期和延时
类Unix系统中,日期被存储成一个整数,大小为自世界标准时间(UTC)1972年.1月.1日.0时.0分.0秒起流逝的秒数。计时方式被称为纪元时orUnix时间
date
-d:解析字符串并按照指定格式输出
-s:根据字符串设置系统时间
-u:显示或设置UTC
技巧1 输出昨天日期
date -d "1 day ago" + "%Y-%m-%d"
技巧2 时间格式转化
date -d "2000-11-11" +"%Y/%m/%d %H:%M.%S" -------> 2000/11/11 00:00.00
技巧3 打印纪元时
date +%s
技巧4 输入日期获知礼拜几
date --date "Jan 20 2001 " +%A -----> Saturday
技巧5 检查一组命令的耗时
#!/bin/bash
start=$(date +%s)
commands;
statements;
end=$(date +$s)
difference=$(( end - start ))
echo These commands used $difference seconds.
技巧6 脚本中使用延时
sleep:$ sleep seconds
#!/bin/bash
# tput sc 存储光标位置,sleep 2 延时2s ,echo -n 忽略结尾换行符,tput rc 恢复光标位置,tput ed 清楚当前光标到行尾的内容。 可以清除之前获得的旧值count写入新值
echo -n Count:
tput sc
count=0;
while true;
do
if [ $count -lt 20 ];
then
let count ++;
sleep 2;
tput rc
tput ed
echo -n $count;
else exit 0;
fi
done