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