1<!-- 2 * t 3 **************************************************************************** 4 * Copyright 2018-2023,2024 Thomas E. Dickey * 5 * Copyright 1998-2016,2017 Free Software Foundation, Inc. * 6 * * 7 * Permission is hereby granted, free of charge, to any person obtaining a * 8 * copy of this software and associated documentation files (the * 9 * "Software"), to deal in the Software without restriction, including * 10 * without limitation the rights to use, copy, modify, merge, publish, * 11 * distribute, distribute with modifications, sublicense, and/or sell * 12 * copies of the Software, and to permit persons to whom the Software is * 13 * furnished to do so, subject to the following conditions: * 14 * * 15 * The above copyright notice and this permission notice shall be included * 16 * in all copies or substantial portions of the Software. * 17 * * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 21 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 24 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 25 * * 26 * Except as contained in this notice, the name(s) of the above copyright * 27 * holders shall not be used in advertising or otherwise to promote the * 28 * sale, use or other dealings in this Software without prior written * 29 * authorization. * 30 **************************************************************************** 31 * @Id: tput.1,v 1.113 2024/04/20 19:58:50 tom Exp @ 32--> 33<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 34<HTML> 35<HEAD> 36<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> 37<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> 38<TITLE>tput 1 2024-04-20 ncurses 6.5 User commands</TITLE> 39<link rel="author" href="mailto:bug-ncurses@gnu.org"> 40 41</HEAD> 42<BODY> 43<H1 class="no-header">tput 1 2024-04-20 ncurses 6.5 User commands</H1> 44<PRE> 45<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> User commands <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> 46 47 48 49 50</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> 51 <STRONG>tput</STRONG> - initialize a terminal, exercise its capabilities, or query <EM>term-</EM> 52 <EM>info</EM> database 53 54 55</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> 56 <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] {<EM>cap-code</EM> [<EM>parameter</EM> ...]} ... 57 58 <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] [<STRONG>-x</STRONG>] <STRONG>clear</STRONG> 59 60 <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] <STRONG>init</STRONG> 61 62 <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] <STRONG>reset</STRONG> 63 64 <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] <STRONG>longname</STRONG> 65 66 <STRONG>tput</STRONG> <STRONG>-S</STRONG> 67 68 <STRONG>tput</STRONG> <STRONG>-V</STRONG> 69 70 71</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> 72 <STRONG>tput</STRONG> uses the <EM>terminfo</EM> library and database to make terminal-specific 73 capabilities and information available to the shell, to initialize or 74 reset the terminal, or to report a description of the current (or 75 specified) terminal type. Terminal capabilities are accessed by <EM>cap-</EM> 76 <EM>code</EM>. 77 78 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> discusses terminal capabilities at length and presents a 79 complete list of <EM>cap-codes</EM>. 80 81 When retrieving capability values, the result depends upon the 82 capability's type. 83 84 Boolean <STRONG>tput</STRONG> sets its exit status to <STRONG>0</STRONG> if the terminal possesses <EM>cap-</EM> 85 <EM>code</EM>, and <STRONG>1</STRONG> if it does not. 86 87 numeric <STRONG>tput</STRONG> writes <EM>cap-code</EM>'s decimal value to the standard output 88 stream if defined (<STRONG>-1</STRONG> if it is not) followed by a newline. 89 90 string <STRONG>tput</STRONG> writes <EM>cap-code</EM>'s value to the standard output stream if 91 defined, without a trailing newline. 92 93 Before using a value returned on the standard output, the application 94 should test <STRONG>tput</STRONG>'s exit status to be sure it is 0; see section "EXIT 95 STATUS" below. 96 97 98</PRE><H3><a name="h3-Operands">Operands</a></H3><PRE> 99 Generally, an operand is a <EM>cap-code</EM>, a capability code from the 100 terminal database, or a parameter thereto. Three others are specially 101 recognized by <STRONG>tput</STRONG>: <STRONG>init</STRONG>, <STRONG>reset</STRONG>, and <STRONG>longname</STRONG>. Although these resemble 102 capability codes, they in fact receive special handling; we term them 103 "pseudo-capabilities". 104 105 <EM>cap-code</EM> indicates a capability from the terminal database. 106 107 If <EM>cap-code</EM> is of string type and takes parameters, <STRONG>tput</STRONG> 108 interprets arguments following <EM>cap-code</EM> as the parameters, 109 up to the (fixed) quantity the capability requires. 110 111 Most parameters are numeric. Only a few terminal 112 capabilities require string parameters; <STRONG>tput</STRONG> uses a table to 113 decide which to pass as strings. Normally <STRONG>tput</STRONG> uses 114 <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> to perform the substitution. If no parameters are 115 given for the capability, <STRONG>tput</STRONG> writes the string without 116 performing the substitution. 117 118 <STRONG>init</STRONG> initializes the terminal. If the terminal database is 119 present and an entry for the user's terminal type exists, 120 the following occur. 121 122 (1) <STRONG>tput</STRONG> retrieves the terminal's mode settings. It 123 successively tests the file descriptors corresponding 124 to 125 126 <STRONG>o</STRONG> the standard error stream, 127 128 <STRONG>o</STRONG> the standard output stream, 129 130 <STRONG>o</STRONG> the standard input stream, and 131 132 <STRONG>o</STRONG> <EM>/dev/tty</EM> 133 134 to obtain terminal settings. Having retrieved them, 135 <STRONG>tput</STRONG> remembers which descriptor to use for further 136 updates. 137 138 (2) If the terminal dimensions cannot be obtained from the 139 operating system, but the environment or terminal type 140 database entry describes them, <STRONG>tput</STRONG> updates the 141 operating system's notion of them. 142 143 (3) <STRONG>tput</STRONG> updates the terminal modes. 144 145 <STRONG>o</STRONG> Any delays specified in the entry (for example, 146 when a newline is sent) are set in the terminal 147 driver. 148 149 <STRONG>o</STRONG> Tab expansion is turned on or off per the 150 specification in the entry, and 151 152 <STRONG>o</STRONG> if tabs are not expanded, standard tabs (every 8 153 spaces) are set. 154 155 (4) If initialization capabilities, detailed in subsection 156 "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, are present, 157 <STRONG>tput</STRONG> writes them to the standard output stream. 158 159 (5) <STRONG>tput</STRONG> flushes the standard output stream. 160 161 If an entry lacks the information needed for an activity 162 above, that activity is silently skipped. 163 164 <STRONG>reset</STRONG> re-initializes the terminal. A reset differs from 165 initialization in two ways. 166 167 (1) <STRONG>tput</STRONG> sets the the terminal modes to a "sane" state, 168 169 <STRONG>o</STRONG> enabling cooked and echo modes, 170 171 <STRONG>o</STRONG> disabling cbreak and raw modes, 172 173 <STRONG>o</STRONG> enabling newline translation, and 174 175 <STRONG>o</STRONG> setting any unset special characters to their 176 default values. 177 178 (2) If any reset capabilities are defined for the terminal 179 type, <STRONG>tput</STRONG> writes them to the output stream. 180 Otherwise, <STRONG>tput</STRONG> uses any defined initialization 181 capabilities. Reset capabilities are detailed in 182 subsection "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. 183 184 <STRONG>longname</STRONG> A <EM>terminfo</EM> entry begins with one or more names by which an 185 application can refer to the entry, before the list of 186 terminal capabilities. The names are separated by "|" 187 characters. X/Open Curses terms the last name the "long 188 name", and indicates that it may include blanks. 189 190 <STRONG>tic</STRONG> warns if the last name does not include blanks, to 191 accommodate old <EM>terminfo</EM> entries that treated the long name 192 as an optional feature. The long name is often referred to 193 as the description field. 194 195 If the terminal database is present and an entry for the 196 user's terminal type exists, <STRONG>tput</STRONG> reports its description to 197 the standard output stream, without a trailing newline. See 198 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. 199 200 <EM>Note:</EM> Redirecting the output of "<STRONG>tput</STRONG> <STRONG>init</STRONG>" or "<STRONG>tput</STRONG> <STRONG>reset</STRONG>" to a file 201 will capture only part of their actions. Changes to the terminal modes 202 are not affected by file descriptor redirection, since the terminal 203 modes are altered via <STRONG>ioctl(2)</STRONG>. 204 205 206</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE> 207 If <STRONG>tput</STRONG> is invoked via link with any of the names <STRONG>clear</STRONG>, <STRONG>init</STRONG>, or 208 <STRONG>reset</STRONG>, it operates as if run with the corresponding (pseudo-)capability 209 operand. For example, executing a link named <STRONG>reset</STRONG> that points to <STRONG>tput</STRONG> 210 has the same effect as "<STRONG>tput</STRONG> <STRONG>reset</STRONG>". 211 212 This feature was introduced by <EM>ncurses</EM> 5.2 in 2000. It is rarely used: 213 214 <STRONG>clear</STRONG> is a separate program, which is both smaller and more frequently 215 executed. 216 217 <STRONG>init</STRONG> has the same name as another program in widespread use. 218 219 <STRONG>reset</STRONG> is provided by the <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility (also via a link named 220 <STRONG>reset</STRONG>). 221 222 223</PRE><H3><a name="h3-Terminal-Size">Terminal Size</a></H3><PRE> 224 Besides the pseudo-capabilities (such as <STRONG>init</STRONG>), <STRONG>tput</STRONG> treats the <STRONG>lines</STRONG> 225 and <STRONG>cols</STRONG> <EM>cap-codes</EM> specially: it may call <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the 226 terminal size. 227 228 <STRONG>o</STRONG> First, <STRONG>tput</STRONG> attempts to obtain these capabilities from the terminal 229 database. This generally fails for terminal emulators, which lack 230 a fixed window size and thus omit the capabilities. 231 232 <STRONG>o</STRONG> It then asks the operating system for the terminal's size, which 233 generally works, unless the connection is via a serial line that 234 does not support "NAWS": negotiations about window size. 235 236 <STRONG>o</STRONG> Finally, it inspects the environment variables <EM>LINES</EM> and <EM>COLUMNS</EM>, 237 which may override the terminal size. 238 239 If the <STRONG>-T</STRONG> option is given, <STRONG>tput</STRONG> ignores the environment variables by 240 calling <STRONG>use_tioctl(TRUE)</STRONG>, relying upon the operating system (or, 241 ultimately, the terminal database). 242 243 244</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> 245 <STRONG>-S</STRONG> retrieves more than one capability per invocation of <STRONG>tput</STRONG>. 246 The capabilities must be passed to <STRONG>tput</STRONG> from the standard 247 input stream instead of from the command line (see section 248 "EXAMPLES" below). Only one <EM>cap-code</EM> is allowed per line. 249 The <STRONG>-S</STRONG> option changes the meanings of the <STRONG>0</STRONG> and <STRONG>1</STRONG> exit 250 statuses (see section "EXIT STATUS" below). 251 252 Some capabilities use string parameters rather than numeric 253 ones. <STRONG>tput</STRONG> employs a built-in table and the presence of 254 parameters in its input to decide how to interpret them, and 255 whether to use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. 256 257 <STRONG>-T</STRONG> <EM>type</EM> indicates the terminal's <EM>type</EM>. Normally this option is 258 unnecessary, because a default is taken from the <EM>TERM</EM> 259 environment variable. If specified, the environment variables 260 <EM>LINES</EM> and <EM>COLUMNS</EM> are also ignored. 261 262 <STRONG>-V</STRONG> reports the version of <EM>ncurses</EM> associated with <STRONG>tput</STRONG>, and exits 263 with a successful status. 264 265 <STRONG>-x</STRONG> prevents "<STRONG>tput</STRONG> <STRONG>clear</STRONG>" from attempting to clear the scrollback 266 buffer. 267 268 269</PRE><H2><a name="h2-EXIT-STATUS">EXIT STATUS</a></H2><PRE> 270 Normally, one should interpret <STRONG>tput</STRONG>'s exit statuses as follows. 271 272 <STRONG>Status</STRONG> <STRONG>Meaning</STRONG> <STRONG>When</STRONG> <STRONG>-S</STRONG> <STRONG>Not</STRONG> <STRONG>Specified</STRONG> 273 ------------------------------------------------------------------------ 274 <STRONG>0</STRONG> Boolean or string capability present 275 <STRONG>1</STRONG> Boolean or numeric capability absent 276 <STRONG>2</STRONG> usage error or no terminal type specified 277 <STRONG>3</STRONG> unrecognized terminal type 278 <STRONG>4</STRONG> unrecognized capability code 279 <STRONG>>4</STRONG> system error (4 + <STRONG>errno</STRONG>) 280 281 When the <STRONG>-S</STRONG> option is used, some statuses change meanings. 282 283 <STRONG>Status</STRONG> <STRONG>Meaning</STRONG> <STRONG>When</STRONG> <STRONG>-S</STRONG> <STRONG>Specified</STRONG> 284 ------------------------------------------------------------------------ 285 <STRONG>0</STRONG> all operands interpreted 286 <STRONG>1</STRONG> unused 287 <STRONG>4</STRONG> some operands not interpreted 288 289 290</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE> 291 <STRONG>tput</STRONG> reads one environment variable. 292 293 <EM>TERM</EM> denotes the terminal type. Each terminal type is distinct, 294 though many are similar. The <STRONG>-T</STRONG> option overrides its value. 295 296 297</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> 298 <EM>/usr/share/tabset</EM> 299 tab stop initialization database 300 301 <EM>/usr/share/terminfo</EM> 302 compiled terminal description database 303 304 305</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> 306 Over time <EM>ncurses</EM> <STRONG>tput</STRONG> has differed from that of System V in two 307 important respects, one now mostly historical. 308 309 <STRONG>o</STRONG> "<STRONG>tput</STRONG> <EM>cap-code</EM>" writes to the standard output, which need not be a 310 terminal device. However, the operands that manipulate terminal 311 modes might not use the standard output. 312 313 System V <STRONG>tput</STRONG>'s <STRONG>init</STRONG> and <STRONG>reset</STRONG> operands use logic from 4.1cBSD 314 <STRONG>tset</STRONG>, manipulating terminal modes. It checks the same file 315 descriptors (and <EM>/dev/tty</EM>) for association with a terminal device 316 as <EM>ncurses</EM> now does, and if none are, finally assumes a 1200 baud 317 terminal. When updating terminal modes, it ignores errors. 318 319 Until <EM>ncurses</EM> 6.1 (see section "HISTORY" below), <STRONG>tput</STRONG> did not 320 modify terminal modes. It now employs a scheme similar to 321 System V, using functions shared with <STRONG>tset</STRONG> (and ultimately based on 322 4.4BSD <STRONG>tset</STRONG>). If it is not able to open a terminal (for instance, 323 when run by <STRONG>cron(1)</STRONG>), <STRONG>tput</STRONG> exits with an error status. 324 325 <STRONG>o</STRONG> System V <STRONG>tput</STRONG> assumes that the type of a <EM>cap-code</EM> operand is 326 numeric if all the characters of its value are decimal numbers; if 327 they are not, it treats <EM>cap-code</EM> as a string capability. 328 329 Most implementations that provide support for <EM>cap-code</EM> operands use 330 the <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> function to expand its parameters. That function 331 expects a mixture of numeric and string parameters, requiring <STRONG>tput</STRONG> 332 to know which type to use. 333 334 <EM>ncurses</EM> <STRONG>tput</STRONG> uses a table to determine the parameter types for the 335 standard <EM>cap-code</EM> operands, and an internal function to analyze 336 nonstandard <EM>cap-code</EM> operands. 337 338 While more reliable than System V's utility, a portability problem 339 is introduced by this analysis. An OpenBSD developer adapted the 340 internal library function from <EM>ncurses</EM> to port NetBSD's <EM>termcap</EM>- 341 based <STRONG>tput</STRONG> to <EM>terminfo</EM>, and modified it to interpret multiple <EM>cap-</EM> 342 <EM>codes</EM> (and parameters) on the command line. Portable applications 343 should not rely upon this feature; <EM>ncurses</EM> offers it to support 344 applications written specifically for OpenBSD. 345 346 This implementation, unlike others, accepts both <EM>termcap</EM> and <EM>terminfo</EM> 347 <EM>cap-codes</EM> if <EM>termcap</EM> support is compiled in. In that case, however, 348 the predefined <EM>termcap</EM> and <EM>terminfo</EM> codes have two ambiguities; <EM>ncurses</EM> 349 assumes the <EM>terminfo</EM> code. 350 351 <STRONG>o</STRONG> The <EM>cap-code</EM> <STRONG>dl</STRONG> means <STRONG>delete_line</STRONG> to <EM>termcap</EM> but <STRONG>parm_delete_line</STRONG> 352 to <EM>terminfo</EM>. <EM>termcap</EM> uses the code <STRONG>DL</STRONG> for <STRONG>parm_delete_line</STRONG>. <EM>term-</EM> 353 <EM>info</EM> uses the code <STRONG>dl1</STRONG> for <STRONG>delete_line</STRONG>. 354 355 <STRONG>o</STRONG> The <EM>cap-code</EM> <STRONG>ed</STRONG> means <STRONG>exit_delete_mode</STRONG> to <EM>termcap</EM> but <STRONG>clr_eos</STRONG> to 356 <EM>terminfo</EM>. <EM>termcap</EM> uses the code <STRONG>cd</STRONG> for <STRONG>clr_eos</STRONG>. <EM>terminfo</EM> uses the 357 code <STRONG>rmdc</STRONG> for <STRONG>exit_delete_mode</STRONG>. 358 359 The <STRONG>longname</STRONG> operand, <STRONG>-S</STRONG> option, and the parameter-substitution 360 features used in the <STRONG>cup</STRONG> example below, were not supported in AT&T/USL 361 <EM>curses</EM> before SVr4 (1989). Later, 4.3BSD-Reno (1990) added support for 362 <STRONG>longname</STRONG>, and in 1994, NetBSD added support for the parameter- 363 substitution features. 364 365 IEEE Std 1003.1/The Open Group Base Specifications Issue 7 366 (POSIX.1-2008) documents only the <STRONG>clear</STRONG>, <STRONG>init</STRONG>, and <STRONG>reset</STRONG> operands. A 367 few observations of interest arise from that selection. 368 369 <STRONG>o</STRONG> <EM>ncurses</EM> supports <STRONG>clear</STRONG> as it does any other standard <EM>cap-code</EM>. The 370 others (<STRONG>init</STRONG> and <STRONG>longname</STRONG>) do not correspond to terminal 371 capabilities. 372 373 <STRONG>o</STRONG> The <STRONG>tput</STRONG> on SVr4-based systems such as Solaris, IRIX64, and HP-UX, 374 as well as others such as AIX and Tru64, also support standard <EM>cap-</EM> 375 <EM>code</EM> operands. 376 377 <STRONG>o</STRONG> A few platforms such as FreeBSD recognize <EM>termcap</EM> codes rather than 378 <EM>terminfo</EM> capability codes in their respective <STRONG>tput</STRONG> commands. Since 379 2010, NetBSD's <STRONG>tput</STRONG> uses <EM>terminfo</EM> codes. Before that, it (like 380 FreeBSD) recognized <EM>termcap</EM> codes. 381 382 Beginning in 2021, FreeBSD uses <EM>ncurses</EM> <STRONG>tput</STRONG>, configured for both 383 <EM>terminfo</EM> (tested first) and <EM>termcap</EM> (as a fallback). 384 385 Because (apparently) all <EM>certified</EM> Unix systems support the full set of 386 capability codes, the reason for documenting only a few may not be 387 apparent. 388 389 <STRONG>o</STRONG> X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>cap-code</EM> and 390 the other features used in this implementation. 391 392 <STRONG>o</STRONG> That is, there are two standards for <STRONG>tput</STRONG>: POSIX (a subset) and 393 X/Open Curses (the full implementation). POSIX documents a subset 394 to avoid the complication of including X/Open Curses and the 395 terminal capability database. 396 397 <STRONG>o</STRONG> While it is certainly possible to write a <STRONG>tput</STRONG> program without 398 using <EM>curses</EM>, no system with a <EM>curses</EM> implementation provides a 399 <STRONG>tput</STRONG> utility that does not also support standard <EM>cap-codes</EM>. 400 401 X/Open Curses Issue 7 (2009) is the first version to document 402 utilities. However that part of X/Open Curses does not follow existing 403 practice (that is, System V <EM>curses</EM> behavior). 404 405 <STRONG>o</STRONG> It assigns exit status 4 to "invalid operand", which may have the 406 same meaning as "unknown capability". For instance, the source 407 code for Solaris <EM>xcurses</EM> uses the term "invalid" in this case. 408 409 <STRONG>o</STRONG> It assigns exit status 255 to a numeric variable that is not 410 specified in the <EM>terminfo</EM> database. That likely is a documentation 411 error, mistaking the "-1" written to the standard output to 412 indicate an absent or cancelled numeric capability for an 413 (unsigned) exit status. 414 415 The various System V implementations (AIX, HP-UX, Solaris) use the same 416 exit statuses as <EM>ncurses</EM>. 417 418 NetBSD <EM>curses</EM> documents exit statuses that correspond to neither 419 <EM>ncurses</EM> nor X/Open Curses. 420 421 422</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> 423 Bill Joy wrote a <STRONG>tput</STRONG> command during development of 4BSD in October 424 1980. This initial version only cleared the screen, and did not ship 425 with official distributions. 426 427 System V developed a different <STRONG>tput</STRONG> command. 428 429 <STRONG>o</STRONG> SVr2 (1984) provided a rudimentary <STRONG>tput</STRONG> that checked the parameter 430 against each predefined capability and returned the corresponding 431 value. This version of <STRONG>tput</STRONG> did not use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> for 432 parameterized capabilities. 433 434 <STRONG>o</STRONG> SVr3 (1987) replaced that with a more extensive program whose 435 support for <STRONG>init</STRONG> and <STRONG>reset</STRONG> operands (more than half the program) 436 incorporated the <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> written by Eric Allman. 437 438 <STRONG>o</STRONG> SVr4 (1989) added color initialization by using the <STRONG>orig_colors</STRONG> 439 (<STRONG>oc</STRONG>) and <STRONG>orig_pair</STRONG> (<STRONG>op</STRONG>) capabilities in its <STRONG>init</STRONG> logic. 440 441 Keith Bostic refactored BSD <STRONG>tput</STRONG> for shipment in 4.3BSD-Tahoe (1988), 442 then replaced it the next year with a new implementation based on 443 System V <STRONG>tput</STRONG>. Bostic's version similarly accepted some parameters 444 named for <EM>terminfo</EM> (pseudo-)capabilities: <STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG>, and 445 <STRONG>reset</STRONG>. However, because he had only <EM>termcap</EM> available, it accepted 446 <EM>termcap</EM> codes for other capabilities. Also, Bostic's BSD <STRONG>tput</STRONG> did not 447 modify the terminal modes as the earlier BSD <STRONG>tset</STRONG> had done. 448 449 At the same time, Bostic added a shell script named "clear" that used 450 <STRONG>tput</STRONG> to clear the screen. Both of these appeared in 4.4BSD, becoming 451 the "modern" BSD implementation of <STRONG>tput</STRONG>. 452 453 The origin of <EM>ncurses</EM> <STRONG>tput</STRONG> lies outside both System V and BSD, in Ross 454 Ridge's <EM>mytinfo</EM> package, published on <EM>comp.sources.unix</EM> in December 455 1992. Ridge's program made more sophisticated use of the terminal 456 capabilities than the BSD program. Eric Raymond used that <STRONG>tput</STRONG> program 457 (and other parts of <EM>mytinfo</EM>) in <EM>ncurses</EM> in June 1995. Incorporating 458 the portions dealing with terminal capabilities almost without change, 459 Raymond made improvements to the way command-line parameters were 460 handled. 461 462 Before <EM>ncurses</EM> 6.1 (2018), its <STRONG>tset</STRONG> and <STRONG>tput</STRONG> utilities differed. 463 464 <STRONG>o</STRONG> <STRONG>tset</STRONG> was more effective, resetting the terminal modes and special 465 characters. 466 467 <STRONG>o</STRONG> On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal capabilities for 468 resetting the terminal was more limited; it had only equivalents of 469 <STRONG>reset_1string</STRONG> (<STRONG>rs1</STRONG>), <STRONG>reset_2string</STRONG> (<STRONG>rs2</STRONG>), and <STRONG>reset_file</STRONG> (<STRONG>rf</STRONG>), and 470 not the tab stop and margin update features of <STRONG>tput</STRONG>. 471 472 The <STRONG>reset</STRONG> program is traditionally an alias for <STRONG>tset</STRONG> due to its ability 473 to reset terminal modes and special characters. 474 475 As of <EM>ncurses</EM> 6.1, the "reset" features of the two programs are 476 (mostly) the same. Two minor differences remain. 477 478 <STRONG>o</STRONG> The <STRONG>tset</STRONG> program waits one second when resetting, in case the 479 terminal happens to be a hardware device. 480 481 <STRONG>o</STRONG> The two programs write the terminal initialization strings to 482 different streams; that is, standard error for <STRONG>tset</STRONG> and standard 483 output for <STRONG>tput</STRONG>. 484 485 486</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE> 487 <STRONG>tput</STRONG> <STRONG>init</STRONG> 488 Initialize the terminal according to the type of terminal in the 489 <EM>TERM</EM> environment variable. If the system does not reliably 490 initialize the terminal upon login, this command can be included 491 in <EM>$HOME/.profile</EM> after exporting the <EM>TERM</EM> environment variable. 492 493 <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG> 494 Reset an AT&T 5620 terminal, overriding the terminal type in the 495 <EM>TERM</EM> environment variable. 496 497 <STRONG>tput</STRONG> <STRONG>cnorm</STRONG> 498 Set cursor to normal visibility. 499 500 <STRONG>tput</STRONG> <STRONG>home</STRONG> 501 Move the cursor to row 0, column 0: the upper left corner of the 502 screen, usually known as the "home" cursor position. 503 504 <STRONG>tput</STRONG> <STRONG>clear</STRONG> 505 Clear the screen: write the <STRONG>clear_screen</STRONG> capability's value to 506 the standard output stream. 507 508 <STRONG>tput</STRONG> <STRONG>cols</STRONG> 509 Report the number of columns used by the current terminal type. 510 511 <STRONG>tput</STRONG> <STRONG>-Tadm3a</STRONG> <STRONG>cols</STRONG> 512 Report the number of columns used by an ADM-3A terminal. 513 514 <STRONG>strong=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>normal=`tput</STRONG> <STRONG>rmso`</STRONG> 515 Set shell variables to capability values: <STRONG>strong</STRONG> and <STRONG>normal</STRONG>, to 516 begin and end, respectively, stand-out mode for the terminal. 517 One might use these to present a prompt. 518 519 printf "${strong}Username:${normal} " 520 521 <STRONG>tput</STRONG> <STRONG>hc</STRONG> 522 Indicate via exit status whether the terminal is a hard copy 523 device. 524 525 <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG> 526 Move the cursor to row 23, column 4. 527 528 <STRONG>tput</STRONG> <STRONG>cup</STRONG> 529 Report the value of the <STRONG>cursor_address</STRONG> (<STRONG>cup</STRONG>) capability (used 530 for cursor movement), with no parameters substituted. 531 532 <STRONG>tput</STRONG> <STRONG>longname</STRONG> 533 Report the <EM>terminfo</EM> database's description of the terminal type 534 specified in the <EM>TERM</EM> environment variable. 535 536 <STRONG>tput</STRONG> <STRONG>-S</STRONG> 537 Process multiple capabilities. The <STRONG>-S</STRONG> option can be profitably 538 used with a shell "here document". 539 540 $ <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG><<!</STRONG> 541 > <STRONG>clear</STRONG> 542 > <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG> 543 > <STRONG>bold</STRONG> 544 > <STRONG>!</STRONG> 545 546 The foregoing clears the screen, moves the cursor to position 547 (10, 10) and turns on bold (extra bright) mode. 548 549 <STRONG>tput</STRONG> <STRONG>clear</STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG> <STRONG>bold</STRONG> 550 Perform the same actions as the foregoing "<STRONG>tput</STRONG> <STRONG>-S</STRONG>" example. 551 552 553</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 554 <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="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 555 556 557 558ncurses 6.5 2024-04-20 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> 559</PRE> 560<div class="nav"> 561<ul> 562<li><a href="#h2-NAME">NAME</a></li> 563<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> 564<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> 565<ul> 566<li><a href="#h3-Operands">Operands</a></li> 567<li><a href="#h3-Aliases">Aliases</a></li> 568<li><a href="#h3-Terminal-Size">Terminal Size</a></li> 569</ul> 570</li> 571<li><a href="#h2-OPTIONS">OPTIONS</a></li> 572<li><a href="#h2-EXIT-STATUS">EXIT STATUS</a></li> 573<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li> 574<li><a href="#h2-FILES">FILES</a></li> 575<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> 576<li><a href="#h2-HISTORY">HISTORY</a></li> 577<li><a href="#h2-EXAMPLES">EXAMPLES</a></li> 578<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> 579</ul> 580</div> 581</BODY> 582</HTML> 583