使用tput创建屏幕输出

tput与terminfo

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

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

tput常用法

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

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

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

tput的使用

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

但请记住,tput并不支持设置颜色!

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

设置终端属性

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

  • bel: 警铃
  • blink: 进入闪烁模式
  • bold: 进入粗体模式
  • civis: 隐藏鼠标
  • cnorm: 取消隐藏鼠标
  • clear: 清屏
  • cup rc: 将光标移动到第r,c列
  • el: 清除到行尾
  • ell: 清除到行首
  • smso: 进入凸出模式
  • rmso: 退出凸出模式
  • smul: 进入下划线模式
  • rmul: 退出下划线模式
  • sc: 保存光标当前位置
  • rc: 回复光标最后保存的位置
  • rev: 进入反转模式
  • sgr0: 回复正常显示
  • setf n/setbn: 设置前景色/背景色.$n为在terminfo数据库中的颜色数值,一般对应关系为:

    数值颜色
    0黑色
    1蓝色
    2绿色
    3青色
    4红色
    5洋红色
    6黄色
    7白色
  • setaf n/setabn: 使用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

获取终端属性

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

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

下面是一个例子

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

The terminal is  x

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

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值