创建屏幕输出-tput/zz/

用户可以使用shell脚本创建交互性的,专业性强的屏幕输出.要实现这一点,系统上需要一个彩色监视器和tput命令.

1 tput

在使用tput前,需要在脚本或命令行中使用tput命令初始化终端.
$ tput init
tupt产生三种不同的输出:字符型,数字型和布尔型(真,假)

    1.1 字符串输出

常用字符串有:

名字    含义

bel    警铃
blink    闪烁模式
bold    粗体
civis    隐藏光标
clear    清屏
等等

    1.2 数字输出

常用数字输出:
名字    含义
cols    列数目
it    tab设置宽度
lines    屏幕行数

    1.3 布尔输出

在tput种只有两种布尔操作符

名字    含义
chts    光标不可见
hs    具有状态行

2 tput 用法

    2.1 设置tput命令

可以取得所有tput名字输出,将其保存为更有意义的变量名.格式如下:
variable_name=’tupt name’

2.2 使用布尔输出

可以在if语句种使用布尔型tput输出.

STATUS_LINE=’tput hs’
if $STATUS_LINE; then
echo103f “your terminal has a status line”
else
echo “your terminal has NO status line”
fi

2.3 在脚本中使用tput

以下脚本设置tput bel和cl为更有意义的变量名.

$ vi tput1
#!/bin/bash
BELL=tput bel
CLEAR=tput cl

echo $BELL
echo $CLEAR

    2.4 产生转义序列

所有控制字符均以一个转义序列开始,通常转义键后紧跟字符[.然后实际序列打开或关闭某终端属性.

    2.5 光标位置

可以用tput将光标放在屏幕任意位置.格式为:
cup r c
r 为从上至下屏幕行数,c为穿过屏幕列数
最好将之编成函数,这样就可以把行和列的值传递给它.

    2.6 在屏幕中心位置显示文本

在屏幕中心位置显示文本不是很麻烦.首先从tput中得到列数,然后算出所提供的字符串长度,从tput列数中减去该值,结果再除以2,所得结果可用于显示的字符串行数.

    2.7 在脚本中使用功能键

使用cat命令可以查看发送的任意特殊键控制序列(F1,上箭头等),键入cat -v,然后按任意控制键,回车,在下一行就可以知道终端发送了什么功能键.结束后按<ctrl-c>退出.

    2.8 使用颜色

对域使用颜色可以使数据输入屏幕看起来更加专业.显示前景或背景颜色格式为:

<ESCAPE> [background_number;foreground_number m

    2.9 产生颜色

产生颜色需要在echo语句中嵌入控制字符.这种方法适用于带有彩色终端的任何系统.与在控制字符里一样,可以在echo语句里使用转义序列产生颜色.
要产生一个黑色背景加绿色前景色:

echo -e “\033[40;32m”

    2.10 创建精致菜单

3 小结

使用tput命令可以增强应用外观及脚本的控制.颜色设置可以增加应用的专业性.注意使用颜色不要太过火,这也许对你来说很好,但其他用户使用这段脚本时看到这种屏幕设置也许会感到厌烦.可以使用和读取控制字符来增加脚本的灵活性,特别是对用户击键输入操作更是如此.