使用 tput 创建屏幕输出
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: w3m 常用操作
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论