3 ****************************************************************************
4 * Copyright (c) 1998-2012,2016 Free Software Foundation, Inc. *
6 * Permission is hereby granted, free of charge, to any person obtaining a *
7 * copy of this software and associated documentation files (the *
8 * "Software"), to deal in the Software without restriction, including *
9 * without limitation the rights to use, copy, modify, merge, publish, *
10 * distribute, distribute with modifications, sublicense, and/or sell *
11 * copies of the Software, and to permit persons to whom the Software is *
12 * furnished to do so, subject to the following conditions: *
14 * The above copyright notice and this permission notice shall be included *
15 * in all copies or substantial portions of the Software. *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
20 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
23 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
25 * Except as contained in this notice, the name(s) of the above copyright *
26 * holders shall not be used in advertising or otherwise to promote the *
27 * sale, use or other dealings in this Software without prior written *
29 ****************************************************************************
30 * @Id: tput.1,v 1.42 2016/07/30 21:01:09 tom Exp @
32 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
35 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
36 <meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
38 <link rev=made href="mailto:bug-ncurses@gnu.org">
39 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
42 <H1 class="no-header">tput 1</H1>
44 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
49 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
50 <STRONG>tput</STRONG>, <STRONG>reset</STRONG> - initialize a terminal or query terminfo
54 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
55 <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <EM>capname</EM> [<EM>parameters</EM>]
56 <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>clear</STRONG>
57 <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>init</STRONG>
58 <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>reset</STRONG>
59 <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>longname</STRONG>
60 <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG><<</STRONG>
61 <STRONG>tput</STRONG> <STRONG>-V</STRONG>
64 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
65 The <STRONG>tput</STRONG> utility uses the <STRONG>terminfo</STRONG> database to make the
66 values of terminal-dependent capabilities and information
67 available to the shell (see <STRONG>sh(1)</STRONG>), to initialize or reset
68 the terminal, or return the long name of the requested
69 terminal type. The result depends upon the capability's
73 <STRONG>tput</STRONG> writes the string to the standard output. No
74 trailing newline is supplied.
77 <STRONG>tput</STRONG> writes the decimal value to the standard out-
78 put, with a trailing newline.
81 <STRONG>tput</STRONG> simply sets the exit code (<STRONG>0</STRONG> for TRUE if the
82 terminal has the capability, <STRONG>1</STRONG> for FALSE if it
83 does not), and writes nothing to the standard out-
86 Before using a value returned on the standard output, the
87 application should test the exit code (e.g., <STRONG>$?</STRONG>, see
88 <STRONG>sh(1)</STRONG>) to be sure it is <STRONG>0</STRONG>. (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and <STRONG>DIAG-</STRONG>
89 <STRONG>NOSTICS</STRONG> sections.) For a complete list of capabilities
90 and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
93 </PRE><H3><a name="h3-Options">Options</a></H3><PRE>
94 <STRONG>-T</STRONG><EM>type</EM> indicates the <EM>type</EM> of terminal. Normally this
95 option is unnecessary, because the default is taken
96 from the environment variable <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is spec-
97 ified, then the shell variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
100 <STRONG>-S</STRONG> allows more than one capability per invocation of
101 <STRONG>tput</STRONG>. The capabilities must be passed to <STRONG>tput</STRONG> from
102 the standard input instead of from the command line
103 (see example). Only one <EM>capname</EM> is allowed per
104 line. The <STRONG>-S</STRONG> option changes the meaning of the <STRONG>0</STRONG>
105 and <STRONG>1</STRONG> boolean and string exit codes (see the EXIT
108 Again, <STRONG>tput</STRONG> uses a table and the presence of param-
109 eters in its input to decide whether to use
110 <STRONG><A HREF="tparm.3x.html">tparm(3x)</A></STRONG>, and how to interpret the parameters.
112 <STRONG>-V</STRONG> reports the version of ncurses which was used in
113 this program, and exits.
116 </PRE><H3><a name="h3-Commands">Commands</a></H3><PRE>
118 indicates the capability from the <STRONG>terminfo</STRONG> data-
119 base. When <STRONG>termcap</STRONG> support is compiled in, the
120 <STRONG>termcap</STRONG> name for the capability is also accepted.
122 If the capability is a string that takes parame-
123 ters, the arguments following the capability will
124 be used as parameters for the string.
126 Most parameters are numbers. Only a few terminfo
127 capabilities require string parameters; <STRONG>tput</STRONG> uses a
128 table to decide which to pass as strings. Normally
129 <STRONG>tput</STRONG> uses <STRONG><A HREF="tparm.3x.html">tparm(3x)</A></STRONG> to perform the substitution.
130 If no parameters are given for the capability, <STRONG>tput</STRONG>
131 writes the string without performing the substitu-
134 <STRONG>init</STRONG> If the <STRONG>terminfo</STRONG> database is present and an entry
135 for the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above),
136 the following will occur:
138 (1) if present, the terminal's initialization
139 strings will be output as detailed in the <STRONG>ter-</STRONG>
140 <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>,
142 (2) any delays (e.g., newline) specified in the
143 entry will be set in the tty driver,
145 (3) tabs expansion will be turned on or off
146 according to the specification in the entry,
149 (4) if tabs are not expanded, standard tabs will
150 be set (every 8 spaces).
152 If an entry does not contain the information needed
153 for any of these activities, that activity will
156 <STRONG>reset</STRONG> Instead of putting out initialization strings, the
157 terminal's reset strings will be output if present
158 (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>). If the reset strings are not
159 present, but initialization strings are, the ini-
160 tialization strings will be output. Otherwise,
161 <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
163 <STRONG>longname</STRONG>
164 If the <STRONG>terminfo</STRONG> database is present and an entry
165 for the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM> above),
166 then the long name of the terminal will be put out.
167 The long name is the last name in the first line of
168 the terminal's description in the <STRONG>terminfo</STRONG> database
169 [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
172 </PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
173 <STRONG>tput</STRONG> handles the <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands specially: it
174 allows for the possibility that it is invoked by a link
177 If <STRONG>tput</STRONG> is invoked by a link named <STRONG>reset</STRONG>, this has the
178 same effect as <STRONG>tput</STRONG> <STRONG>reset</STRONG>. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility also
179 treats a link named <STRONG>reset</STRONG> specially:
181 <STRONG>o</STRONG> That utility resets the terminal modes and special
182 characters (not done here).
184 <STRONG>o</STRONG> On the other hand, tset's repertoire of terminal capa-
185 bilities for resetting the terminal is more limited,
186 i.e., only <STRONG>reset_1string</STRONG>, <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG>
187 in contrast to the tab-stops and margins which are set
190 <STRONG>o</STRONG> The <STRONG>reset</STRONG> program is usually an alias for tset, due to
191 the resetting of terminal modes and special charac-
194 If <STRONG>tput</STRONG> is invoked by a link named <STRONG>init</STRONG>, this has the same
195 effect as <STRONG>tput</STRONG> <STRONG>init</STRONG>. Again, you are less likely to use
196 that link because another program named <STRONG>init</STRONG> has a more
197 well-established use.
200 </PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
201 <STRONG>tput</STRONG> <STRONG>init</STRONG>
202 Initialize the terminal according to the type of ter-
203 minal in the environmental variable <STRONG>TERM</STRONG>. This com-
204 mand should be included in everyone's .profile after
205 the environmental variable <STRONG>TERM</STRONG> has been exported, as
206 illustrated on the <STRONG>profile(5)</STRONG> manual page.
208 <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
209 Reset an AT&T 5620 terminal, overriding the type of
210 terminal in the environmental variable <STRONG>TERM</STRONG>.
212 <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
213 Send the sequence to move the cursor to row <STRONG>0</STRONG>, column
214 <STRONG>0</STRONG> (the upper left corner of the screen, usually known
215 as the "home" cursor position).
217 <STRONG>tput</STRONG> <STRONG>clear</STRONG>
218 Echo the clear-screen sequence for the current termi-
221 <STRONG>tput</STRONG> <STRONG>cols</STRONG>
222 Print the number of columns for the current terminal.
224 <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>cols</STRONG>
225 Print the number of columns for the 450 terminal.
227 <STRONG>bold=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>offbold=`tput</STRONG> <STRONG>rmso`</STRONG>
228 Set the shell variables <STRONG>bold</STRONG>, to begin stand-out mode
229 sequence, and <STRONG>offbold</STRONG>, to end standout mode sequence,
230 for the current terminal. This might be followed by
231 a prompt: <STRONG>echo</STRONG> <STRONG>"${bold}Please</STRONG> <STRONG>type</STRONG> <STRONG>in</STRONG> <STRONG>your</STRONG> <STRONG>name:</STRONG>
232 <STRONG>${offbold}\c"</STRONG>
234 <STRONG>tput</STRONG> <STRONG>hc</STRONG>
235 Set exit code to indicate if the current terminal is
236 a hard copy terminal.
238 <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG>
239 Send the sequence to move the cursor to row 23, col-
242 <STRONG>tput</STRONG> <STRONG>cup</STRONG>
243 Send the terminfo string for cursor-movement, with no
244 parameters substituted.
246 <STRONG>tput</STRONG> <STRONG>longname</STRONG>
247 Print the long name from the <STRONG>terminfo</STRONG> database for
248 the type of terminal specified in the environmental
249 variable <STRONG>TERM</STRONG>.
251 <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG><<!</STRONG>
252 <STRONG>></STRONG> <STRONG>clear</STRONG>
253 <STRONG>></STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG>
254 <STRONG>></STRONG> <STRONG>bold</STRONG>
255 <STRONG>></STRONG> <STRONG>!</STRONG>
257 This example shows <STRONG>tput</STRONG> processing several capabili-
258 ties in one invocation. It clears the screen, moves
259 the cursor to position 10, 10 and turns on bold
260 (extra bright) mode. The list is terminated by an
261 exclamation mark (<STRONG>!</STRONG>) on a line by itself.
264 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
265 <STRONG>/usr/share/terminfo</STRONG>
266 compiled terminal description database
268 <STRONG>/usr/share/tabset/*</STRONG>
269 tab settings for some terminals, in a format appro-
270 priate to be output to the terminal (escape
271 sequences that set margins and tabs); for more
272 information, see the <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>, sec-
273 tion of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
276 </PRE><H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE>
277 If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each
278 line, and if any errors are found, will set the exit code
279 to 4 plus the number of lines with errors. If no errors
280 are found, the exit code is <STRONG>0</STRONG>. No indication of which
281 line failed can be given so exit code <STRONG>1</STRONG> will never appear.
282 Exit codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation.
283 If the <STRONG>-S</STRONG> option is not used, the exit code depends on the
284 type of <EM>capname</EM>:
287 a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
289 <EM>string</EM> a value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined
290 for this terminal <EM>type</EM> (the value of <EM>capname</EM> is
291 returned on standard output); a value of <STRONG>1</STRONG> is
292 set if <EM>capname</EM> is not defined for this terminal
293 <EM>type</EM> (nothing is written to standard output).
296 a value of <STRONG>0</STRONG> is always set, whether or not <EM>cap-</EM>
297 <EM>name</EM> is defined for this terminal <EM>type</EM>. To
298 determine if <EM>capname</EM> is defined for this termi-
299 nal <EM>type</EM>, the user must test the value written
300 to standard output. A value of <STRONG>-1</STRONG> means that
301 <EM>capname</EM> is not defined for this terminal <EM>type</EM>.
303 <EM>other</EM> <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find their respective
304 files. In that case, the exit code is set to 4
305 + <STRONG>errno</STRONG>.
307 Any other exit code indicates an error; see the DIAGNOS-
311 </PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
312 <STRONG>tput</STRONG> prints the following error messages and sets the cor-
313 responding exit codes.
315 exit code error message
316 ---------------------------------------------------------------------
317 <STRONG>0</STRONG> (<EM>capname</EM> is a numeric variable that is not specified in
318 the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> database for this terminal type, e.g.
319 <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-T2621</STRONG> <STRONG>xmc</STRONG>)
320 <STRONG>1</STRONG> no error message is printed, see the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> section.
321 <STRONG>2</STRONG> usage error
322 <STRONG>3</STRONG> unknown terminal <EM>type</EM> or no <STRONG>terminfo</STRONG> database
323 <STRONG>4</STRONG> unknown <STRONG>terminfo</STRONG> capability <EM>capname</EM>
324 <STRONG>>4</STRONG> error occurred in -S
325 ---------------------------------------------------------------------
328 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
329 The <STRONG>tput</STRONG> command was begun by Bill Joy in 1980. The ini-
330 tial version only cleared the screen.
332 Keith Bostic replaced this in 1989 with a new implementa-
333 tion based on the AT&T SystemV program <STRONG>tput</STRONG>. Like the
334 AT&T program, Bostic's version accepted some parameters
335 named for <EM>terminfo</EM> <EM>capabilities</EM> (<STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG> and
336 <STRONG>reset</STRONG>). However (because he had only termcap available),
337 it accepted <EM>termcap</EM> <EM>names</EM> for other capabilities.
339 At the same time, Bostic added a shell script named
340 "clear", which used <STRONG>tput</STRONG> to clear the screen.
342 Both of these appeared in 4.4BSD, becoming the "modern"
343 BSD implementation of <STRONG>tput</STRONG>.
346 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
347 This implementation of <STRONG>tput</STRONG> differs from AT&T <STRONG>tput</STRONG> in two
350 <STRONG>o</STRONG> tput writes to the standard output. That need not be
353 The AT&T implementation's <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands use
354 the <STRONG>tset</STRONG> source, which manipulates terminal modes. It
355 successively tries standard output, standard error,
356 standard input before falling back to "/dev/tty" and
357 finally just assumes a 1200Bd terminal. When updating
358 terminal modes, it ignores errors.
360 <STRONG>o</STRONG> AT&T <STRONG>tput</STRONG> guesses the type of its <EM>capname</EM> operands by
361 seeing if all of the characters are numeric, or not.
363 Most implementations which provide support for <EM>capname</EM>
364 operands use the <EM>tparm</EM> function to expand parameters
365 in it. That function expects a mixture of numeric and
366 string parameters, requiring <STRONG>tput</STRONG> to know which type
369 This implementation uses a table to determine the
370 parameter types for the standard <EM>capname</EM> operands, and
371 an internal library function to analyze nonstandard
372 <EM>capname</EM> operands.
374 The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and the parameter-substitu-
375 tion features used in the <STRONG>cup</STRONG> example, were not supported
376 in BSD curses before 4.3reno (1989) or in AT&T/USL curses
379 IEEE Std 1003.1/The Open Group Base Specifications Issue
380 7 (POSIX.1-2008) documents only the operands for <STRONG>clear</STRONG>,
381 <STRONG>init</STRONG> and <STRONG>reset</STRONG>. There are a few interesting observations
382 to make regarding that:
384 <STRONG>o</STRONG> In this implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM>
385 support. The others (<STRONG>init</STRONG> and <STRONG>longname</STRONG>) do not corre-
386 spond to terminal capabilities.
388 <STRONG>o</STRONG> Other implementations of <STRONG>tput</STRONG> on SVr4-based systems
389 such as Solaris, IRIX64 and HPUX as well as others
390 such as AIX and Tru64 provide support for <EM>capname</EM> op-
393 <STRONG>o</STRONG> A few platforms such as FreeBSD recognize termcap
394 names rather than terminfo capability names in their
395 respective <STRONG>tput</STRONG> commands. Since 2010, NetBSD's <STRONG>tput</STRONG>
396 uses terminfo names. Before that, it (like FreeBSD)
397 recognized termcap names.
399 Because (apparently) <EM>all</EM> of the certified Unix systems
400 support the full set of capability names, the reasoning
401 for documenting only a few may not be apparent.
403 <STRONG>o</STRONG> X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with
404 <EM>capname</EM> and the other features used in this implemen-
407 <STRONG>o</STRONG> That is, there are two standards for <STRONG>tput</STRONG>: POSIX (a
408 subset) and X/Open Curses (the full implementation).
409 POSIX documents a subset to avoid the complication of
410 including X/Open Curses and the terminal capabilities
413 <STRONG>o</STRONG> While it is certainly possible to write a <STRONG>tput</STRONG> program
414 without using curses, none of the systems which have a
415 curses implementation provide a <STRONG>tput</STRONG> utility which
416 does not provide the <EM>capname</EM> feature.
419 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
420 <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
421 <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
423 This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20160730).
427 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
431 <li><a href="#h2-NAME">NAME</a></li>
432 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
433 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
435 <li><a href="#h3-Options">Options</a></li>
436 <li><a href="#h3-Commands">Commands</a></li>
437 <li><a href="#h3-Aliases">Aliases</a></li>
440 <li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
441 <li><a href="#h2-FILES">FILES</a></li>
442 <li><a href="#h2-EXIT-CODES">EXIT CODES</a></li>
443 <li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
444 <li><a href="#h2-HISTORY">HISTORY</a></li>
445 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
446 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>