tput (初始化终端或查询terminfo数据库)

rose1 发表于 2020-07-30 14:42
浏览次数:
在手机上阅读

在类似Unix的操作系统上,tput命令初始化终端或查询terminfo 数据库。 本文档介绍了tput的Linux版本。

查看英文版

目录

1 tput 运行系统环境

2 tput 说明

3 tput 语法

4 tput 例子

tput 运行系统环境

Linux

tput 说明

该tput的 工具使用的terminfo数据库使与终端相关的能力和信息提供给值外壳,初始化和重新设置终端,或返回所请求的终端类型的长名。结果取决于能力的类型:

tput将字符串写入标准输出。没有尾随的换行符。
整数 tput将十进制值和尾随换行符写入标准输出。
布尔值 tput设置退出代码(如果终端有能力,则设置退出代码(如果为TRUE,则为0;否则为FALSE,则设置为1),并且不向标准输出写入任何内容。

在使用在标准输出上返回的值之前,应用程序应测试退出代码(例如$ ?;有关详细信息,请参见sh)以确保其为0。(请参阅“ 退出代码和诊断”部分。)有关功能和与之相关的功能名称的完整列表,请参见terminfo手册。

The tput utility uses the terminfo database to make the values of terminal-dependent capabilities and information available to the shell, to initialize or reset the terminal, or return the long name of the requested terminal type. The result depends upon the capability's type:

string tput writes the string to the standard output. No trailing newline is supplied.
integer tput writes the decimal value to the standard output, with a trailing newline.
boolean tput sets the exit code (0 for TRUE if the terminal has the capability, 1 for FALSE if it does not), and writes nothing to the standard output.

Before using a value returned on the standard output, the application should test the exit code (for example, $?; see sh for details) to be sure it is 0. (See the Exit Codes and Diagnostics sections.) For a complete list of capabilities and the capname associated with each, see the manual for terminfo.

查看英文版

查看中文版

tput 语法

tput [-Ttype] capname [params ... ]
tput [-Ttype] init
tput [-Ttype] reset
tput [-Ttype] longname
tput -S <<
tput -V

选件

-Ttype 指示终端的类型。通常,此选项是不必要的,因为默认值来自环境变量 TERM。如果指定了-T,那么将忽略外壳变量LINESCOLUMNS,并且不会查询操作系统的实际屏幕大小。
capname 指示terminfo数据库中的功能。当的termcap(终端能力数据库)支持编译的,在termcap中的功能名也是可以接受的。
params 如果能力是一个字符串,采用参数,该参数 PARAMS将被实例化到字符串。

大多数参数是数字。只有少数terminfo功能需要字符串参数。tput使用表来决定将哪个作为字符串传递。如果没有为该功能提供任何参数,则tput将写入字符串而不执行替换。
-S 每次调用tput都允许多个功能。必须将这些功能从标准输入而不是从命令行传递到tput(请参见下面的示例)。每行只允许使用一个名称。的-S选项改变的含义0和1布尔值和串退出代码(参见退出代码部分)。

同样,tput使用表和输入中参数的存在来决定是否以及如何解释参数。
-V 报告此程序中使用的ncurses版本(文本界面编程库),然后退出。
init 如果存在terminfo数据库,并且存在用户终端的条目(请参见上面的-T type),则会发生以下情况:

  • 终端的初始化字符串(如果存在)将按照“制表符和初始化”中terminfo部分的详细说明进行输出,
  • 条目中指定的任何延迟(例如,换行符)都将在tty驱动程序中设置,
  • 标签扩展将根据条目中的规范打开或关闭,并且
  • 如果选项卡未展开,则将每8个空格设置标准选项卡。
如果条目不包含上述四个活动中的任何一个所需的信息,则该活动将被静默跳过。
reset 如果存在终端(rs1,rs2,rs3,rf),则会输出终端的重置字符串,而不是发出初始化字符串。如果不存在重置字符串,但是存在初始化字符串,则将输出初始化字符串。否则,reset的行为与init相同。
longname 如果存在terminfo数据库,并且存在用户终端的条目(请参见上面的-T 类型),则将输出终端的长名称。长名是terminfo数据库中终端说明的第一行中的姓氏。

如果tput由名为reset的链接调用,则其效果与tput reset相同。请参阅tset进行比较,其行为类似。

退出码

如果使用-S选项,则tput将检查每行中的错误,如果发现任何错误,则将退出代码设置为4加上有错误的行数。如果未找到错误,则退出代码为0。无法指示哪条线失败,因此将永远不会显示退出代码1。退出代码2,34保持其通常的解释。如果不使用-S选项,则退出代码取决于capname的类型:

boolean 0被设置为TRUE,并且1为FALSE。
string 如果为此端子类型定义了Capname,则将值设置为0(在标准输出中返回capname的值);否则,将设置为0。如果未为该终端类型定义capname,则将值设置为1(不向标准输出写入任何内容)。
integer 无论是否为此终端类型定义了capname,始终将其设置为0。要确定是否为此终端类型定义了capname,用户必须测试写入标准输出的值。值-1表示未为此终端类型定义capname。
other 该复位或初始化可能无法找到其相应的文件。在这种情况下,退出代码设置为4 + errno。

如“ 诊断”部分所列,任何其他退出代码均指示错误。

诊断程序

tput打印以下错误消息并设置相应的退出代码:

0 capname是未在指定的数值变量的terminfo数据库此终端类型,例如,tput的-T450线tput的-T2621 XMC。
1 没有错误消息被打印;请参阅退出代码部分。
2 使用错误。
3 未知的终端类型或没有terminfo数据库。
4 未知的terminfo功能Capname。
>4 根据-S选项发生错误。

档案

/etc/terminfo 编译后的终端描述数据库。
/usr/share/tabset/* 某些终端的制表符设置,采用适合于输出到终端的格式(设置页边距和制表符的转义序列);有关更多信息,请参见terminfo手册。
tput [-Ttype] capname [params ... ]
tput [-Ttype] init
tput [-Ttype] reset
tput [-Ttype] longname
tput -S <<
tput -V

Options

-Ttype Indicates the type of terminal. Normally this option is unnecessary, because the default is taken from the environment variable TERM. If -T is specified, then the shell variables LINES and COLUMNS will be ignored, and the operating system will not be queried for the actual screen size.
capname Indicates the capability from the terminfo database. When termcap (the terminal capability database) support is compiled in, the termcap name for the capability is also accepted.
params If the capability is a string that takes parameters, the arguments params will be instantiated into the string.

Most parameters are numbers. Only a few terminfo capabilities require string parameters; tput uses a table to decide which to pass as strings. If no parameters are given for the capability, tput writes the string without performing the substitution.
-S Allows more than one capability per invocation of tput. The capabilities must be passed to tput from the standard input instead of from the command line (see example, below). Only one capname is allowed per line. The -S option changes the meaning of the 0 and 1 boolean and string exit codes (see the Exit Codes section).

Again, tput uses a table and the presence of parameters in its input to decide whether, and how, to interpret the parameters.
-V Reports the version of ncurses (a text interface programming library) which was used in this program, and exits.
init If the terminfo database is present and an entry for the user's terminal exists (see -Ttype, above), the following will occur:

  • If present, the terminal's initialization strings will be output as detailed in the terminfo section on Tabs and Initialization,
  • Any delays (e.g., newline) specified in the entry will be set in the tty driver,
  • Tabs expansion will be turned on or off according to the specification in the entry, and
  • If tabs are not expanded, standard tabs will be set, every 8 spaces.
If an entry does not contain the information needed for any of the four above activities, that activity will silently be skipped.
reset Instead of putting out initialization strings, the terminal's reset strings will be output if present (rs1rs2rs3rf). If the reset strings are not present, but initialization strings are, the initialization strings will be output. Otherwise, reset acts identically to init.
longname If the terminfo database is present and an entry for the user's terminal exists (see -Ttype above), then the long name of the terminal will be put out. The long name is the last name in the first line of the terminal's description in the terminfo database.

If tput is invoked by a link named reset, this has the same effect as tput reset. See tset for comparison, which has similar behavior.

Exit Codes

If the -S option is used, tput checks for errors from each line, and if any errors are found, will set the exit code to 4 plus the number of lines with errors. If no errors are found, the exit code is 0. No indication of which line failed can be given so exit code 1 will never appear. Exit codes 23, and 4 retain their usual interpretation. If the -S option is not used, the exit code depends on the type of capname:

boolean A value of 0 is set for TRUE and 1 for FALSE.
string A value of 0 is set if the capname is defined for this terminal type (the value of capname is returned on standard output); a value of 1 is set if capname is not defined for this terminal type (nothing is written to standard output).
integer A value of 0 is always set, whether or not capname is defined for this terminal type. To determine if capname is defined for this terminal type, the user must test the value written to standard output. A value of -1 means that capname is not defined for this terminal type.
other The reset or init may fail to find their respective files. In that case, the exit code is set to 4 + errno.

Any other exit code indicates an error, as listed in the Diagnostics section.

Diagnostics

tput prints the following error messages and sets the corresponding exit codes:

0 The capname is a numeric variable that is not specified in the terminfo database for this terminal type, e.g., tput -T450 lines and tput -T2621 xmc.
1 No error message is printed; see the Exit Codes section.
2 Usage error.
3 Unknown terminal type or no terminfo database.
4 Unknown terminfo capability capname.
>4 Error occurred as per the -S option.

Files

/etc/terminfo The compiled terminal description database.
/usr/share/tabset/* Tab settings for some terminals, in a format appropriate to be output to the terminal (escape sequences that set margins and tabs); for more information, see the manual for terminfo.

查看英文版

查看中文版

tput 例子

tput init

根据环境变量TERM中的终端类型初始化终端。导出环境变量TERM之后,该命令应包含在.profile文件中。

tput -T5620 reset

重置AT&T 5620终端,以覆盖环境变量TERM中的终端类型。

tput cup 0 0

发送序列来移动光标到行0,列0(在屏幕的左上角,通常被称为“家庭”光标位置)。

tput clear

回显当前终端的清除屏幕顺序。

tput cols

打印当前终端的列数。

tput -T450 cols

打印450终端的列数。

bold=`tput smso` offbold=`tput rmso`

对于当前终端,将外壳变量设置为粗体以开始突出模式序列,将offbold设置为结束突出模式序列。此命令后可能会提示:echo“ $ {bold}请输入您的名字:$ {offbold} \ c”。

tput hc

设置退出代码以指示当前终端是否为硬拷贝终端。

tput cup 23 4

发送序列将光标移动到第23行第4列。

tput cup

发送terminfo字符串进行光标移动,不替换任何参数。

tput longname

terminfo数据库中为环境变量TERM中指定的终端类型打印长名称。

tput init

Initialize the terminal according to the type of terminal in the environment variable TERM. This command should be included in the .profile file after the environment variable TERM has been exported.

tput -T5620 reset

Reset an AT&T 5620 terminal, overriding the type of terminal in the environment variable TERM.

tput cup 0 0

Send the sequence to move the cursor to row 0, column 0 (the upper left corner of the screen, usually known as the "home" cursor position).

tput clear

Echo the clear-screen sequence for the current terminal.

tput cols

Print the number of columns for the current terminal.

tput -T450 cols

Print the number of columns for the 450 terminal.

bold=`tput smso` offbold=`tput rmso`

Set the shell variables bold, to begin stand-out mode sequence, and offbold, to end standout mode sequence, for the current terminal. This command might be followed by a prompt: echo "${bold}Please type in your name: ${offbold}\c".

tput hc

Set exit code to indicate if the current terminal is a hard copy terminal.

tput cup 23 4

Send the sequence to move the cursor to row 23, column 4.

tput cup

Send the terminfo string for cursor-movement, with no parameters substituted.

tput longname

Print the long name from the terminfo database for the type of terminal specified in the environment variable TERM.

查看英文版

查看中文版

其他命令行

tabs | tac | talk | tail | tcopy | tty | tar | tbl | tcpdump | time | tee | timex | telinit | telnet | test | top | touch | tr | troff | traceroute |

如此好文,分享给朋友