您当前的位置:首页 > 计算机 > 系统应用 > Linux

使用 tput 创建屏幕输出

时间:12-14来源:作者:点击数:

1 tput 与 terminfo

tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用 tput,您可以更改几项终端功能,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。

UNIX 系统上的 terminfo 数据库用于定义终端和打印机的属性及功能,包括各设备(例如,终端和打印机)的行数和列数以及要发送至该设备的文本的属性。 UNIX 中的几个常用程序都依赖 terminfo 数据库提供这些属性以及许多其他内容,其中包括 vi 和 emacs 编辑器以及 curses 和 man 程序。

2 tput常用法

tput 默认通过 $TERM 的值来指示终端类型,但我们也可以通过 -T $Type 来指定终端类型。不过一般来说都没有这个必要。

下面的用法中都上略对 -T 参数的说。

tput capname [parameters]
这是 tput 最常用的方式,具体用法见下一章.
tput init
初始化终端,在使用 tput 前一般会先执行该命令
tput reset
重置终端属性为默认值
tput clear
清屏
tput -S
从 stdin 中读取指令,可以支持一次性设置多个指令,但必须保证一个指令一行。

3 tput 的使用

tput 一般用于作三件事情:设置终端属性,获取终端属性以及判断终端是否支持某项能力。

但请记住,某些系统(比如 AIX)中的 tput 并不支持设置颜色!

另外,在使用 tput 的输出值时,请一定先保证 tput 的返回值为 0

3.1 设置终端属性

tput 主要是通过输出控制码字符串来实现一些特殊终端效果的.

bel
警铃
blink
进入闪烁模式
bold
进入粗体模式
civis
隐藏鼠标
cnorm
取消隐藏鼠标
clear
清屏
cup $r $c
将光标移动到第$r行,第$c列
el
清除到行尾
ell
清除到行首
smso
进入凸出模式
rmso
退出凸出模式
smul
进入下划线模式
rmul
退出下划线模式
sc
保存光标当前位置
rc
回复光标最后保存的位置
rev
进入反转模式
sgr0
回复正常显示
setf $n / setb $n

设置前景色/背景色,$n 为在 terminfo 数据库中的颜色数值,一般对应关系为:

数值 颜色
0 黑色
1 蓝色
2 绿色
3 青色
4 红色
5 洋红色
6 黄色
7 白色
setaf $n / setab $n
使用 ANSI 的转义字符来设置前景色、背景色。

下面是一个例子

#!/bin/bash

BOLD=$(tput bold)
REV=$(tput rev)
NORMAL=$(tput sgr0)
CURSOR_OFF=$(tput civis)
CURSOR_ON=$(tput cnorm)

tput init

tput clear
echo $CURSOR_OFF
tput cup 2 15
echo -e "${BOLD}粗体效果{NORMAL}\n"
echo  "${REV}反转效果${NORMAL}"
echo $CURSOR_ON

3.2 获取终端属性

tput 会输出一个数字,表示该属性的值.

cols
获取终端一行有多少列字符
lines
获取终端一列有多少行字符
it
终端的TAB相当于几个空格

下面是一个例子

echo "The terminal is $(tput cols) x $(tput lines)"
The terminal is 80 x 24

3.3 判断终端是否存在某项能力

tput 会通过返回值来表示是否具有这项能力(0 表示 true,1 表示 false)

chts
光标是否不可见
hs
终端是否具有状态行

下面是一个例子:

if tput hs;then
    echo "your terminal has a status lne"
else
    echo "your terminal has NO status line"
fi
your terminal has NO status line
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐