Tput was provided in UNIX System V in the early 1980s. A clone of the AT&T tput was submitted to volume 7 of the mod.sources newsgroup (later comp.sources.unix) in September 1986. In contrast to the System V program, the clone used termcap rather than terminfo. It accepted command-line parameters for the
cm (cursor addressing) capability, and recognized terminfo capability names.
System V Release 3 provided an improved version which combined the different initialization capabilities as a new option
init, and the reset capabilities as
reset, thereby simplifying use of tput for initializing or reinitializing the terminal. System V Release 3.2 added several printer-specific capabilities to the terminfo database, such as
swidm (enter_doublewide_mode) which tput could use. It also added capabilities for color.
BSD platforms provided a different implementation of tput in 4.3BSD-Reno (June 1990). It used termcap, recognizing only termcap capability names, and did not accept command-line parameters for cursor-addressing. FreeBSD used this in 1994, improving it by accepting one or two numeric command-line parameters.
Ross Ridge's mytinfo package in 1992 provided a tput which accepted either termcap or terminfo capability names. Like the Reno implementation, it did not pass command-line arguments to parameterized capabilities. ncurses incorporated the mytinfo code in June 1995. The initial version added a
-S option, and interpreted command-line parameters as described in the System V Release 4 documentation.
The Open Group defines one option (
-T, to specify the terminal type) and three keywords (
reset). Most implementations accept the name of a terminal capability together with any parameters that may be needed for that. However, some implementations expect a termcap name, while others expect a terminfo name.
All System V Release 4 implementations, as well as those which are designed to be compatible, also recognize a
-S option (to tell tput to read data from the standard input), and an additional keyword
longname. They also accept command-line parameters, usually distinguishing numeric from string parameters by the form of the parameter, checking for all-numeric characters. That makes it impossible for example to set a function-key label to a string of digits. Using a different approach, ncurses determines the expected type of the parameters with a table of the terminfo capabilities which use string parameters, eliminating the ambiguity.
|Set background color||tput setab color|
|Set foreground color||tput setaf color|
|Set bold mode||tput bold|
|Set half-bright mode||tput dim|
|Set underline mode||tput smul|
|Exit underline mode||tput rmul|
|Reverse mode||tput rev|
|Set standout mode||tput smso|
|Exit standout mode||tput rmso|
|Reset all attributes||tput sgr0|
For an example, to make the terminal font color red, execute
tput setaf 1
- Lokanathan, Badri (1986-08-28). "Public-domain tput(1) program". Retrieved 2008-04-22.
- Lokanathan, Badri (1986-09-19). "Public-domain TPUT (corrected implementation)". Retrieved 2008-04-22.
- Strang, John; Mui, Linda; O'Reilly, Tim (1988). Termcap and terminfo. O'Reilly. p. 56–57. ISBN 0-937175-22-6.
- "3BSD/4BSD versions". The Unix Heritage Society. 2000-06-25. Retrieved 2008-04-20.
- "CVS log for src/usr.bin/tput/tput.c". May 27, 1994.
- Ross Ridge (December 27, 1992). "mytinfo posting to comp.sources.unix newsgroup". Internet Systems Consortium, Inc.
- "terminfo 5 File Formats".
- Tansley, D. S. W. (2000). "Creating screen output". Linux and UNIX shell programming. Safari Tech Books Online. Addison-Wesley. ISBN 978-0-201-67472-9.