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