tput

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In computing, tput is a standard Unix operating system command which makes use of terminal capabilities.

Depending on the system, tput uses the terminfo or termcap database, as well as looking into the environment for the terminal type.

History[edit]

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.[1][2] 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.[3] 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.

System V Release 4 defined additional terminfo capabilities including standardized ANSI color capabilities setaf and setab, which could be used by tput.

BSD platforms provided a different implementation of tput in 4.3BSD-Reno (June 1990).[4] 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.[5]

Ross Ridge's mytinfo package in 1992[6] 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.

Portability[edit]

The Open Group defines one option (-T, to specify the terminal type) and three keywords (init, clear and 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.

Usage[edit]

Action Parameters
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
Color[7] Code
Black 0
Red 1
Green 2
Yellow 3
Blue 4
Magenta 5
Cyan 6
White 7

For an example, to make the terminal font color red, execute

tput setaf 1

See also[edit]

References[edit]

  1. ^ Lokanathan, Badri (1986-08-28). "Public-domain tput(1) program". Retrieved 2008-04-22. 
  2. ^ Lokanathan, Badri (1986-09-19). "Public-domain TPUT (corrected implementation)". Retrieved 2008-04-22. 
  3. ^ Strang, John; Mui, Linda; O'Reilly, Tim (1988). Termcap and terminfo. O'Reilly. p. 56–57. ISBN 0-937175-22-6. 
  4. ^ "3BSD/4BSD versions". The Unix Heritage Society. 2000-06-25. Retrieved 2008-04-20. 
  5. ^ "CVS log for src/usr.bin/tput/tput.c". May 27, 1994. 
  6. ^ Ross Ridge (December 27, 1992). "mytinfo posting to comp.sources.unix newsgroup". Internet Systems Consortium, Inc. 
  7. ^ "terminfo 5 File Formats". 

Further reading[edit]

  • 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. 

External links[edit]

Manual pages[edit]

Tutorials[edit]