+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>tput</STRONG> utility uses the <STRONG>terminfo</STRONG> database to make the values of ter-
+ minal-dependent capabilities and information available to the shell
+ (see <STRONG>sh(1)</STRONG>), to initialize or reset the terminal, or return the long
+ name of the requested terminal type. The result depends upon the capa-
+ bility's type:
+
+ string
+ <STRONG>tput</STRONG> writes the string to the standard output. No trailing
+ newline is supplied.
+
+ integer
+ <STRONG>tput</STRONG> writes the decimal value to the standard output, with a
+ trailing newline.
+
+ boolean
+ <STRONG>tput</STRONG> simply sets the exit code (<STRONG>0</STRONG> for TRUE if the terminal has
+ the capability, <STRONG>1</STRONG> for FALSE if it does not), and writes nothing
+ to the standard output.
+
+ Before using a value returned on the standard output, the application
+ should test the exit code (e.g., <STRONG>$?</STRONG>, see <STRONG>sh(1)</STRONG>) to be sure it is <STRONG>0</STRONG>.
+ (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and <STRONG>DIAGNOSTICS</STRONG> sections.) For a complete list of
+ capabilities and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+
+
+</PRE><H3><a name="h3-Options">Options</a></H3><PRE>
+ <STRONG>-S</STRONG> allows more than one capability per invocation of <STRONG>tput</STRONG>. The
+ capabilities must be passed to <STRONG>tput</STRONG> from the standard input
+ instead of from the command line (see example). Only one <EM>cap-</EM>
+ <EM>name</EM> is allowed per line. The <STRONG>-S</STRONG> option changes the meaning of
+ the <STRONG>0</STRONG> and <STRONG>1</STRONG> boolean and string exit codes (see the EXIT CODES
+ section).
+
+ Because some capabilities may use <EM>string</EM> parameters rather than
+ <EM>numbers</EM>, <STRONG>tput</STRONG> uses a table and the presence of parameters in its
+ input to decide whether to use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>, and how to interpret
+ the parameters.
+
+ <STRONG>-T</STRONG><EM>type</EM> indicates the <EM>type</EM> of terminal. Normally this option is unnec-
+ essary, because the default is taken from the environment vari-
+ able <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is specified, then the shell variables <STRONG>LINES</STRONG>
+ and <STRONG>COLUMNS</STRONG> will also be ignored.
+
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program,
+ and exits.
+
+ <STRONG>-x</STRONG> do not attempt to clear the terminal's scrollback buffer using
+ the extended "E3" capability.
+
+
+</PRE><H3><a name="h3-Commands">Commands</a></H3><PRE>
+ A few commands (<STRONG>init</STRONG>, <STRONG>reset</STRONG> and <STRONG>longname</STRONG>) are special; they are defined
+ by the <STRONG>tput</STRONG> program. The others are the names of <EM>capabilities</EM> from the
+ terminal database (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for a list). Although <STRONG>init</STRONG> and
+ <STRONG>reset</STRONG> resemble capability names, <STRONG>tput</STRONG> uses several capabilities to per-
+ form these special functions.
+
+ <EM>capname</EM>
+ indicates the capability from the terminal database.
+
+ If the capability is a string that takes parameters, the argu-
+ ments following the capability will be used as parameters for
+ the string.
+
+ Most parameters are numbers. Only a few terminal capabilities
+ require string parameters; <STRONG>tput</STRONG> uses a table to decide which to
+ pass as strings. Normally <STRONG>tput</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> to perform the
+ substitution. If no parameters are given for the capability,
+ <STRONG>tput</STRONG> writes the string without performing the substitution.
+
+ <STRONG>init</STRONG> If the terminal database is present and an entry for the user's
+ terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above), the following will occur:
+
+ (1) first, <STRONG>tput</STRONG> retrieves the current terminal mode settings
+ for your terminal. It does this by successively testing
+
+ <STRONG>o</STRONG> the standard error,
+
+ <STRONG>o</STRONG> standard output,
+
+ <STRONG>o</STRONG> standard input and
+
+ <STRONG>o</STRONG> ultimately "/dev/tty"
+
+ to obtain terminal settings. Having retrieved these set-
+ tings, <STRONG>tput</STRONG> remembers which file descriptor to use when
+ updating settings.
+
+ (2) if the window size cannot be obtained from the operating
+ system, but the terminal description (or environment, e.g.,
+ <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> variables specify this), update the oper-
+ ating system's notion of the window size.
+
+ (3) the terminal modes will be updated:
+
+ <STRONG>o</STRONG> any delays (e.g., newline) specified in the entry will
+ be set in the tty driver,
+
+ <STRONG>o</STRONG> tabs expansion will be turned on or off according to
+ the specification in the entry, and
+
+ <STRONG>o</STRONG> if tabs are not expanded, standard tabs will be set
+ (every 8 spaces).
+
+ (4) if present, the terminal's initialization strings will be
+ output as detailed in the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM>
+ <EM>Initialization</EM>,
+
+ (5) output is flushed.
+
+ If an entry does not contain the information needed for any of
+ these activities, that activity will silently be skipped.
+
+ <STRONG>reset</STRONG> This is similar to <STRONG>init</STRONG>, with two differences:
+
+ (1) before any other initialization, the terminal modes will be
+ reset to a "sane" state:
+
+ <STRONG>o</STRONG> set cooked and echo modes,
+
+ <STRONG>o</STRONG> turn off cbreak and raw modes,
+
+ <STRONG>o</STRONG> turn on newline translation and
+
+ <STRONG>o</STRONG> reset any unset special characters to their default
+ values
+
+ (2) Instead of putting out <EM>initialization</EM> strings, the termi-
+ nal's <EM>reset</EM> strings will be output if present (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>,
+ <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>). If the <EM>reset</EM> strings are not present, but <EM>ini-</EM>
+ <EM>tialization</EM> strings are, the <EM>initialization</EM> strings will be
+ output.
+
+ Otherwise, <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
+
+ <STRONG>longname</STRONG>
+ If the terminal database is present and an entry for the user's
+ terminal exists (see <STRONG>-T</STRONG><EM>type</EM> above), then the long name of the
+ terminal will be put out. The long name is the last name in the
+ first line of the terminal's description in the <STRONG>terminfo</STRONG> data-
+ base [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
+
+
+</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
+ <STRONG>tput</STRONG> handles the <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands specially: it allows
+ for the possibility that it is invoked by a link with those names.
+
+ If <STRONG>tput</STRONG> is invoked by a link named <STRONG>reset</STRONG>, this has the same effect as
+ <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-
+ cially.
+
+ Before ncurses 6.1, the two utilities were different from each other:
+
+ <STRONG>o</STRONG> <STRONG>tset</STRONG> utility reset the terminal modes and special characters (not
+ done with <STRONG>tput</STRONG>).
+
+ <STRONG>o</STRONG> On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal capabilities for
+ resetting the terminal was more limited, i.e., only <STRONG>reset_1string</STRONG>,
+ <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG> in contrast to the tab-stops and mar-
+ gins which are set by this utility.
+
+ <STRONG>o</STRONG> The <STRONG>reset</STRONG> program is usually an alias for <STRONG>tset</STRONG>, because of this
+ difference with resetting terminal modes and special characters.
+
+ With the changes made for ncurses 6.1, the <EM>reset</EM> feature of the two
+ programs is (mostly) the same. A few differences remain:
+
+ <STRONG>o</STRONG> The <STRONG>tset</STRONG> program waits one second when resetting, in case it hap-
+ pens to be a hardware terminal.
+
+ <STRONG>o</STRONG> The two programs write the terminal initialization strings to dif-
+ ferent streams (i.e., the standard error for <STRONG>tset</STRONG> and the standard
+ output for <STRONG>tput</STRONG>).
+
+ <STRONG>Note:</STRONG> although these programs write to different streams, redirect-
+ ing their output to a file will capture only part of their actions.
+ The changes to the terminal modes are not affected by redirecting
+ the output.
+
+ If <STRONG>tput</STRONG> is invoked by a link named <STRONG>init</STRONG>, this has the same effect as
+ <STRONG>tput</STRONG> <STRONG>init</STRONG>. Again, you are less likely to use that link because another
+ program named <STRONG>init</STRONG> has a more well-established use.
+
+
+</PRE><H3><a name="h3-Terminal-Size">Terminal Size</a></H3><PRE>
+ Besides the special commands (e.g., <STRONG>clear</STRONG>), tput treats certain ter-
+ minfo capabilities specially: <STRONG>lines</STRONG> and <STRONG>columns</STRONG>. tput calls
+ <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the terminal size:
+
+ <STRONG>o</STRONG> first, it gets the size from the terminal database (which generally
+ is not provided for terminal emulators which do not have a fixed
+ window size)
+
+ <STRONG>o</STRONG> then it asks the operating system for the terminal's size (which
+ generally works, unless connecting via a serial line which does not
+ support <EM>NAWS</EM>: negotiations about window size).
+
+ <STRONG>o</STRONG> finally, it inspects the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
+ which may override the terminal size.
+
+ If the <STRONG>-T</STRONG> option is given tput ignores the environment variables by
+ calling <STRONG>use_tioctl(TRUE)</STRONG>, relying upon the operating system (or
+ finally, the terminal database).
+
+
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+ <STRONG>tput</STRONG> <STRONG>init</STRONG>
+ Initialize the terminal according to the type of terminal in the
+ environmental variable <STRONG>TERM</STRONG>. This command should be included in
+ everyone's .profile after the environmental variable <STRONG>TERM</STRONG> has been
+ exported, as illustrated on the <STRONG>profile(5)</STRONG> manual page.
+
+ <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
+ Reset an AT&T 5620 terminal, overriding the type of terminal in
+ the environmental variable <STRONG>TERM</STRONG>.
+
+ <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
+ Send the sequence to move the cursor to row <STRONG>0</STRONG>, column <STRONG>0</STRONG> (the upper
+ left corner of the screen, usually known as the "home" cursor
+ position).
+
+ <STRONG>tput</STRONG> <STRONG>clear</STRONG>
+ Echo the clear-screen sequence for the current terminal.
+
+ <STRONG>tput</STRONG> <STRONG>cols</STRONG>