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