6.5. 使用 tput 实现颜色和光标移动

与 Unix 中的许多事物一样,实现相同目的的方法不止一种。一个名为 tput 的实用程序也可以用于在屏幕上移动光标,获取有关终端状态的信息或设置颜色。man tput 命令手册没有详细介绍可用的命令,但 Emilio Lopes 发邮件给我指出,man terminfo 将为您提供大量功能列表,其中许多功能是设备独立的,因此比之前提到的转义序列更好。他建议我出于这个原因使用 tput 重写所有示例。 他说我应该这样做是正确的,但我控制它并使其执行我想要的一切时遇到了一些麻烦。 但是,我确实重写了一个提示符,您可以将其作为示例查看:第 12.8 节

以下是我发现有用的 tput 功能列表

tput 颜色功能

tput setab [1-7]

使用 ANSI 转义序列设置背景颜色

tput setb [1-7]

设置背景颜色

tput setaf [1-7]

使用 ANSI 转义序列设置前景色

tput setf [1-7]

设置前景色

tput 文本模式功能

tput bold

设置粗体模式

tput dim

开启半亮度模式

tput smul

开始下划线模式

tput rmul

退出下划线模式

tput rev

开启反色模式

tput smso

进入突出显示模式(rxvt 上为粗体)

tput rmso

退出突出显示模式

tput sgr0

关闭所有属性(效果不如预期)

tput 光标移动功能

tput cup Y X

将光标移动到屏幕位置 X,Y(左上角为 0,0)

tput sc

保存光标位置

tput rc

恢复光标位置

tput lines

输出终端的行数

tput cols

输出终端的列数

tput cub N

向左移动 N 个字符

tput cuf N

向右移动 N 个字符

tput cub1

向左移动一个空格

tput cuf1

非破坏性空格(向右移动一个空格)

tput ll

最后一行,第一列(如果没有 cup)

tput cuu1

向上移动一行

tput 清除和插入功能

tput ech N

擦除 N 个字符

tput clear

清除屏幕并将光标置于原位

tput el1

清除到行首

tput el

清除到行尾

tput ed

清除到屏幕末尾

tput ich N

插入 N 个字符(将该行剩余部分向前移动!)

tput il N

插入 N 行

这绝不是 terminfotput 允许的全部功能列表,实际上这仅仅是个开始。如果您想了解更多信息,请参阅 man tputman terminfo