]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/tput.1.html
dfb4c6a8ef468d16a688fbf9496e5bde22e25fc1
[ncurses.git] / doc / html / man / tput.1.html
1 <!-- 
2   * t
3   ****************************************************************************
4   * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.              *
5   *                                                                          *
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:                 *
13   *                                                                          *
14   * The above copyright notice and this permission notice shall be included  *
15   * in all copies or substantial portions of the Software.                   *
16   *                                                                          *
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.                               *
24   *                                                                          *
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       *
28   * authorization.                                                           *
29   ****************************************************************************
30   * @Id: tput.1,v 1.50 2017/01/07 23:03:28 tom Exp @
31 -->
32 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
33 <HTML>
34 <HEAD>
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">
37 <TITLE>tput 1</TITLE>
38 <link rev=made href="mailto:bug-ncurses@gnu.org">
39 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
40 </HEAD>
41 <BODY>
42 <H1 class="no-header">tput 1</H1>
43 <PRE>
44 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>                                                         <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
45
46
47
48
49 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
50        <STRONG>tput</STRONG>,  <STRONG>reset</STRONG>  -  initialize  a  terminal or query terminfo
51        database
52
53
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>&lt;&lt;</STRONG>
61        <STRONG>tput</STRONG> <STRONG>-V</STRONG>
62
63
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
70        type:
71
72           string
73                <STRONG>tput</STRONG> writes the string to the standard output.  No
74                trailing newline is supplied.
75
76           integer
77                <STRONG>tput</STRONG> writes the decimal value to the standard out-
78                put, with a trailing newline.
79
80           boolean
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-
84                put.
85
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>.
91
92
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>
98               will also be ignored.
99
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
106               CODES section).
107
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="curs_terminfo.3x.html">tparm(3x)</A></STRONG>, and how to interpret the parameters.
111
112        <STRONG>-V</STRONG>     reports the version of ncurses which  was  used  in
113               this program, and exits.
114
115
116 </PRE><H3><a name="h3-Commands">Commands</a></H3><PRE>
117        <EM>capname</EM>
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.
121
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.
125
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="curs_terminfo.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-
132               tion.
133
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:
137
138               (1)  first,  <STRONG>tput</STRONG>  retrieves  the  current terminal
139                    mode settings for your terminal.  It does this
140                    by successively testing
141
142                    <STRONG>o</STRONG>   the standard error,
143
144                    <STRONG>o</STRONG>   standard output,
145
146                    <STRONG>o</STRONG>   standard input and
147
148                    <STRONG>o</STRONG>   ultimately "/dev/tty"
149
150                    to obtain terminal settings.  Having retrieved
151                    these  settings,  <STRONG>tput</STRONG>  remembers  which  file
152                    descriptor to use when updating settings.
153
154               (2)  if the window size cannot be obtained from the
155                    operating system, but the terminal description
156                    (or environment, e.g., <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> vari-
157                    ables specify this), update the operating sys-
158                    tem's notion of the window size.
159
160               (3)  the terminal modes will be updated:
161
162                    <STRONG>o</STRONG>   any  delays  (e.g.,  newline) specified in
163                        the entry will be set in the tty driver,
164
165                    <STRONG>o</STRONG>   tabs expansion will be turned  on  or  off
166                        according  to  the  specification  in  the
167                        entry, and
168
169                    <STRONG>o</STRONG>   if tabs are not  expanded,  standard  tabs
170                        will be set (every 8 spaces).
171
172               (4)  if   present,  the  terminal's  initialization
173                    strings will be output as detailed in the <STRONG>ter-</STRONG>
174                    <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>,
175
176               (5)  output is flushed.
177
178               If an entry does not contain the information needed
179               for any of these  activities,  that  activity  will
180               silently be skipped.
181
182        <STRONG>reset</STRONG>  This is similar to <STRONG>init</STRONG>, with two differences:
183
184               (1)  before  any other initialization, the terminal
185                    modes will be reset to a "sane" state:
186
187                    <STRONG>o</STRONG>   set cooked and echo modes,
188
189                    <STRONG>o</STRONG>   turn off cbreak and raw modes,
190
191                    <STRONG>o</STRONG>   turn on newline translation and
192
193                    <STRONG>o</STRONG>   reset  any  unset  special  characters  to
194                        their default values
195
196               (2)  Instead of putting out <EM>initialization</EM> strings,
197                    the terminal's <EM>reset</EM> strings will be output if
198                    present  (<STRONG>rs1</STRONG>,  <STRONG>rs2</STRONG>,  <STRONG>rs3</STRONG>,  <STRONG>rf</STRONG>).  If the <EM>reset</EM>
199                    strings are not  present,  but  <EM>initialization</EM>
200                    strings  are,  the <EM>initialization</EM> strings will
201                    be output.
202
203               Otherwise, <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
204
205        <STRONG>longname</STRONG>
206               If the <STRONG>terminfo</STRONG> database is present  and  an  entry
207               for  the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM> above),
208               then the long name of the terminal will be put out.
209               The long name is the last name in the first line of
210               the terminal's description in the <STRONG>terminfo</STRONG> database
211               [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
212
213
214 </PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
215        <STRONG>tput</STRONG> handles the <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands specially:
216        it allows for the possibility that it is invoked by a link
217        with those names.
218
219        If  <STRONG>tput</STRONG>  is  invoked  by a link named <STRONG>reset</STRONG>, this has the
220        same effect as  <STRONG>tput</STRONG>  <STRONG>reset</STRONG>.   The  <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>  utility  also
221        treats a link named <STRONG>reset</STRONG> specially.
222
223        Before  ncurses 6.1, the two utilities were different from
224        each other:
225
226        <STRONG>o</STRONG>   <STRONG>tset</STRONG> utility reset  the  terminal  modes  and  special
227            characters (not done with <STRONG>tput</STRONG>).
228
229        <STRONG>o</STRONG>   On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal capa-
230            bilities for resetting the terminal was more  limited,
231            i.e., only <STRONG>reset_1string</STRONG>, <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG>
232            in contrast to the tab-stops and margins which are set
233            by this utility.
234
235        <STRONG>o</STRONG>   The  <STRONG>reset</STRONG>  program  is  usually  an  alias  for <STRONG>tset</STRONG>,
236            because of this  difference  with  resetting  terminal
237            modes and special characters.
238
239        With  the  changes made for ncurses 6.1, the <EM>reset</EM> feature
240        of the two programs is (mostly) the same.  A  few  differ-
241        ences remain:
242
243        <STRONG>o</STRONG>   The  <STRONG>tset</STRONG>  program waits one second when resetting, in
244            case it happens to be a hardware terminal.
245
246        <STRONG>o</STRONG>   The two programs  write  the  terminal  initialization
247            strings  to  different  streams  (i.e.,.  the standard
248            error for <STRONG>tset</STRONG> and the standard output for <STRONG>tput</STRONG>).
249
250            <STRONG>Note:</STRONG>  although  these  programs  write  to  different
251            streams,  redirecting their output to a file will cap-
252            ture only part of their actions.  The changes  to  the
253            terminal  modes  are  not  affected by redirecting the
254            output.
255
256        If <STRONG>tput</STRONG> is invoked by a link named <STRONG>init</STRONG>, this has the same
257        effect  as  <STRONG>tput</STRONG>  <STRONG>init</STRONG>.  Again, you are less likely to use
258        that link because another program named <STRONG>init</STRONG>  has  a  more
259        well-established use.
260
261
262 </PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
263        <STRONG>tput</STRONG> <STRONG>init</STRONG>
264             Initialize the terminal according to the type of ter-
265             minal in the environmental variable <STRONG>TERM</STRONG>.  This  com-
266             mand  should be included in everyone's .profile after
267             the environmental variable <STRONG>TERM</STRONG> has been exported, as
268             illustrated on the <STRONG>profile(5)</STRONG> manual page.
269
270        <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
271             Reset  an  AT&amp;T 5620 terminal, overriding the type of
272             terminal in the environmental variable <STRONG>TERM</STRONG>.
273
274        <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
275             Send the sequence to move the cursor to row <STRONG>0</STRONG>, column
276             <STRONG>0</STRONG> (the upper left corner of the screen, usually known
277             as the "home" cursor position).
278
279        <STRONG>tput</STRONG> <STRONG>clear</STRONG>
280             Echo the clear-screen sequence for the current termi-
281             nal.
282
283        <STRONG>tput</STRONG> <STRONG>cols</STRONG>
284             Print the number of columns for the current terminal.
285
286        <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>cols</STRONG>
287             Print the number of columns for the 450 terminal.
288
289        <STRONG>bold=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>offbold=`tput</STRONG> <STRONG>rmso`</STRONG>
290             Set the shell variables <STRONG>bold</STRONG>, to begin stand-out mode
291             sequence, and <STRONG>offbold</STRONG>, to end standout mode sequence,
292             for  the current terminal.  This might be followed by
293             a prompt: <STRONG>echo</STRONG>  <STRONG>"${bold}Please</STRONG>  <STRONG>type</STRONG>  <STRONG>in</STRONG>  <STRONG>your</STRONG>  <STRONG>name:</STRONG>
294             <STRONG>${offbold}\c"</STRONG>
295
296        <STRONG>tput</STRONG> <STRONG>hc</STRONG>
297             Set  exit code to indicate if the current terminal is
298             a hard copy terminal.
299
300        <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG>
301             Send the sequence to move the cursor to row 23,  col-
302             umn 4.
303
304        <STRONG>tput</STRONG> <STRONG>cup</STRONG>
305             Send the terminfo string for cursor-movement, with no
306             parameters substituted.
307
308        <STRONG>tput</STRONG> <STRONG>longname</STRONG>
309             Print the long name from the  <STRONG>terminfo</STRONG>  database  for
310             the  type  of terminal specified in the environmental
311             variable <STRONG>TERM</STRONG>.
312
313             <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG>&lt;&lt;!</STRONG>
314             <STRONG>&gt;</STRONG> <STRONG>clear</STRONG>
315             <STRONG>&gt;</STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG>
316             <STRONG>&gt;</STRONG> <STRONG>bold</STRONG>
317             <STRONG>&gt;</STRONG> <STRONG>!</STRONG>
318
319             This example shows <STRONG>tput</STRONG> processing several  capabili-
320             ties  in one invocation.  It clears the screen, moves
321             the cursor to position  10,  10  and  turns  on  bold
322             (extra  bright)  mode.   The list is terminated by an
323             exclamation mark (<STRONG>!</STRONG>) on a line by itself.
324
325
326 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
327        <STRONG>/usr/share/terminfo</STRONG>
328               compiled terminal description database
329
330        <STRONG>/usr/share/tabset/*</STRONG>
331               tab settings for some terminals, in a format appro-
332               priate   to  be  output  to  the  terminal  (escape
333               sequences that set  margins  and  tabs);  for  more
334               information,  see the <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>, sec-
335               tion of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
336
337
338 </PRE><H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE>
339        If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each
340        line,  and if any errors are found, will set the exit code
341        to 4 plus the number of lines with errors.  If  no  errors
342        are  found,  the  exit  code is <STRONG>0</STRONG>.  No indication of which
343        line failed can be given so exit code <STRONG>1</STRONG> will never appear.
344        Exit  codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation.
345        If the <STRONG>-S</STRONG> option is not used, the exit code depends on the
346        type of <EM>capname</EM>:
347
348           <EM>boolean</EM>
349                  a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
350
351           <EM>string</EM> a  value  of  <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined
352                  for this terminal <EM>type</EM> (the value of <EM>capname</EM>  is
353                  returned  on  standard  output); a value of <STRONG>1</STRONG> is
354                  set if <EM>capname</EM> is not defined for this  terminal
355                  <EM>type</EM> (nothing is written to standard output).
356
357           <EM>integer</EM>
358                  a  value of <STRONG>0</STRONG> is always set, whether or not <EM>cap-</EM>
359                  <EM>name</EM> is defined  for  this  terminal  <EM>type</EM>.   To
360                  determine  if <EM>capname</EM> is defined for this termi-
361                  nal <EM>type</EM>, the user must test the  value  written
362                  to  standard  output.   A value of <STRONG>-1</STRONG> means that
363                  <EM>capname</EM> is not defined for this terminal <EM>type</EM>.
364
365           <EM>other</EM>  <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find their  respective
366                  files.   In that case, the exit code is set to 4
367                  + <STRONG>errno</STRONG>.
368
369        Any other exit code indicates an error; see  the  DIAGNOS-
370        TICS section.
371
372
373 </PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
374        <STRONG>tput</STRONG> prints the following error messages and sets the cor-
375        responding exit codes.
376
377        exit code   error message
378        ---------------------------------------------------------------------
379        <STRONG>0</STRONG>           (<EM>capname</EM> is a numeric variable that is not specified  in
380                    the  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  database  for this terminal type, e.g.
381                    <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-T2621</STRONG> <STRONG>xmc</STRONG>)
382        <STRONG>1</STRONG>           no error message is printed, see the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> section.
383        <STRONG>2</STRONG>           usage error
384        <STRONG>3</STRONG>           unknown terminal <EM>type</EM> or no <STRONG>terminfo</STRONG> database
385        <STRONG>4</STRONG>           unknown <STRONG>terminfo</STRONG> capability <EM>capname</EM>
386        <STRONG>&gt;4</STRONG>          error occurred in -S
387        ---------------------------------------------------------------------
388
389
390 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
391        The <STRONG>tput</STRONG> command was begun by Bill Joy in 1980.  The  ini-
392        tial version only cleared the screen.
393
394        AT&amp;T  System  V  provided  a different <STRONG>tput</STRONG> command, whose
395        <STRONG>init</STRONG> and <STRONG>reset</STRONG>  subcommands (more than half  the  program)
396        were incorporated from the <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> writ-
397        ten by Eric Allman.  Later the corresponding  source  code
398        for  <EM>reset</EM>  was  removed  from the BSD <STRONG>tset</STRONG> (in June 1993,
399        released in 4.4BSD-Lite a year later).
400
401        Keith Bostic replaced the BSD <STRONG>tput</STRONG> command in 1989 with  a
402        new  implementation  based  on  the  AT&amp;T System V program
403        <STRONG>tput</STRONG>.  Like the AT&amp;T program,  Bostic's  version  accepted
404        some  parameters  named  for <EM>terminfo</EM> <EM>capabilities</EM> (<STRONG>clear</STRONG>,
405        <STRONG>init</STRONG>, <STRONG>longname</STRONG> and <STRONG>reset</STRONG>).  However (because he  had  only
406        termcap  available),  it  accepted <EM>termcap</EM> <EM>names</EM> for other
407        capabilities.  Also, Bostic's BSD <STRONG>tput</STRONG> did not modify  the
408        terminal I/O modes as the earlier BSD <STRONG>tset</STRONG> had done.
409
410        At  the  same  time,  Bostic  added  a  shell script named
411        "clear", which used <STRONG>tput</STRONG> to clear the screen.
412
413        Both of these appeared in 4.4BSD,  becoming  the  "modern"
414        BSD implementation of <STRONG>tput</STRONG>.
415
416
417 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
418        This  implementation of <STRONG>tput</STRONG> differs from AT&amp;T <STRONG>tput</STRONG> in two
419        important areas:
420
421        <STRONG>o</STRONG>   <STRONG>tput</STRONG> <EM>capname</EM> writes to the standard output.  That need
422            not  be  a regular terminal.  However, the subcommands
423            which manipulate terminal modes may not use the  stan-
424            dard output.
425
426            The  AT&amp;T implementation's <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands use
427            the BSD (4.1c) <STRONG>tset</STRONG> source, which manipulates terminal
428            modes.   It  successively tries standard output, stan-
429            dard error, standard  input  before  falling  back  to
430            "/dev/tty" and finally just assumes a 1200Bd terminal.
431            When updating terminal modes, it ignores errors.
432
433            Until changes made after ncurses  6.0,  <STRONG>tput</STRONG>  did  not
434            modify  terminal  modes.   <STRONG>tput</STRONG>  now  uses  a  similar
435            scheme, using functions shared with  <STRONG>tset</STRONG>  (and  ulti-
436            mately  based  on the 4.4BSD <STRONG>tset</STRONG>).  If it is not able
437            to open a terminal, e.g., when running in  <STRONG>cron</STRONG>,  <STRONG>tput</STRONG>
438            will return an error.
439
440        <STRONG>o</STRONG>   AT&amp;T  <STRONG>tput</STRONG> guesses the type of its <EM>capname</EM> operands by
441            seeing if all of the characters are numeric, or not.
442
443            Most implementations which provide support for <EM>capname</EM>
444            operands  use  the <EM>tparm</EM> function to expand parameters
445            in it.  That function expects a mixture of numeric and
446            string  parameters,  requiring <STRONG>tput</STRONG> to know which type
447            to use.
448
449            This implementation uses  a  table  to  determine  the
450            parameter types for the standard <EM>capname</EM> operands, and
451            an internal library function  to  analyze  nonstandard
452            <EM>capname</EM> operands.
453
454        The  <STRONG>longname</STRONG>  and <STRONG>-S</STRONG> options, and the parameter-substitu-
455        tion features used in the <STRONG>cup</STRONG> example, were not  supported
456        in  BSD curses before 4.3reno (1989) or in AT&amp;T/USL curses
457        before SVr4 (1988).
458
459        IEEE Std 1003.1/The Open Group  Base Specifications  Issue
460        7  (POSIX.1-2008)  documents  only the operands for <STRONG>clear</STRONG>,
461        <STRONG>init</STRONG> and <STRONG>reset</STRONG>.  There are a few interesting  observations
462        to make regarding that:
463
464        <STRONG>o</STRONG>   In  this  implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM>
465            support.  The others (<STRONG>init</STRONG> and <STRONG>longname</STRONG>) do not corre-
466            spond to terminal capabilities.
467
468        <STRONG>o</STRONG>   Other  implementations  of  <STRONG>tput</STRONG> on SVr4-based systems
469            such as Solaris, IRIX64 and HPUX  as  well  as  others
470            such  as AIX and Tru64 provide support for <EM>capname</EM> op-
471            erands.
472
473        <STRONG>o</STRONG>   A few platforms  such  as  FreeBSD  recognize  termcap
474            names  rather  than terminfo capability names in their
475            respective <STRONG>tput</STRONG> commands.  Since 2010,  NetBSD's  <STRONG>tput</STRONG>
476            uses  terminfo  names.  Before that, it (like FreeBSD)
477            recognized termcap names.
478
479        Because (apparently) <EM>all</EM> of  the  certified  Unix  systems
480        support  the  full  set of capability names, the reasoning
481        for documenting only a few may not be apparent.
482
483        <STRONG>o</STRONG>   X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with
484            <EM>capname</EM>  and the other features used in this implemen-
485            tation.
486
487        <STRONG>o</STRONG>   That is, there are two standards for  <STRONG>tput</STRONG>:  POSIX  (a
488            subset)  and  X/Open Curses (the full implementation).
489            POSIX documents a subset to avoid the complication  of
490            including  X/Open Curses and the terminal capabilities
491            database.
492
493        <STRONG>o</STRONG>   While it is certainly possible to write a <STRONG>tput</STRONG> program
494            without using curses, none of the systems which have a
495            curses implementation provide  a  <STRONG>tput</STRONG>  utility  which
496            does not provide the <EM>capname</EM> feature.
497
498
499 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
500        <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>,
501        <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
502
503        This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20170107).
504
505
506
507                                                                 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
508 </PRE>
509 <div class="nav">
510 <ul>
511 <li><a href="#h2-NAME">NAME</a></li>
512 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
513 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
514 <ul>
515 <li><a href="#h3-Options">Options</a></li>
516 <li><a href="#h3-Commands">Commands</a></li>
517 <li><a href="#h3-Aliases">Aliases</a></li>
518 </ul>
519 </li>
520 <li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
521 <li><a href="#h2-FILES">FILES</a></li>
522 <li><a href="#h2-EXIT-CODES">EXIT CODES</a></li>
523 <li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
524 <li><a href="#h2-HISTORY">HISTORY</a></li>
525 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
526 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
527 </ul>
528 </div>
529 </BODY>
530 </HTML>