Here are some more advanced examples of using tput
; most involve
some shell programming. Because the C shell's flow control (decision
making) constructs differ from those of the other shells, these
examples do not work under the C shell.
The following sequence of commands prints `I am infalible' and then crosses it out on terminals that can overstrike, and prints `I am on strike' on terminals that cannot.
if tput os; then echo 'I am infalible\r- -- ---------' else echo 'I am on strike' fi
The following example is a shell script that centers a line of text
given as command line arguments. An alternative approach would be to
have tput
send the `rep' terminfo capability to print the
multiple spaces instead of using the while
loop.
COLUMNS=`tput cols` export COLUMNS # Get screen width. echo "$@" | awk ' { spaces = ('$COLUMNS' - length) / 2 while (spaces-- > 0) printf (" ") print }'
The following commands cause the terminal to save the current cursor position, print `Hello, World' centered in the screen in reverse video, then return to the original cursor position.
COLUMNS=`tput cols` LINES=`tput lines` line=`expr $LINES / 2` column=`expr \( $COLUMNS - 6 \) / 2` tput sc tput cup $line $column tput rev echo 'Hello, World' tput sgr0 tput rc
The middle three lines of the above example can also be written using `--standard-input'.
tput --standard-input <<EOF sc cup $line $column rev EOF
Go to the first, previous, next, last section, table of contents.