Using ANSI escape sequences :
ANSI escape sequences or tput allow you to move the cursor around the
screen at will. This is more useful for full screen user interfaces
generated by shell scripts, but can also be used in prompts.
The movement escape sequences are as follows:
- Position the Cursor:
\033[<L>;<C>H
Or
\033[<L>;<C>f
puts the cursor at line L and column C.
- Move the cursor up N lines:
\033[<N>A
- Move the cursor down N lines:
\033[<N>B
- Move the cursor forward N columns:
\033[<N>C
- Move the cursor backward N columns:
\033[<N>D
- Clear the screen, move to (0,0):
\033[2J
- Erase to end of line:
\033[K
- Save cursor position:
\033[s
- Restore cursor position:
\033[u
The latter two codes are NOT honored by many terminal emulators. The
only ones that I'm aware of that do are xterm and nxterm - even though
the majority of terminal emulators are based on xterm code. As far as
I can tell, rxvt, kvt, xiterm, and Eterm do not support them. They are
supported on the console.
$ echo -en "\033[s\033[7B\033[1;34m BASH BASH\033[u\033[0m"
Above line saves the current cursor position(\033[s), then move the
cursor seven lines down the screen(\033[7B),print the word "BASH BASH"
in dark blue color(\033[1;34m), and then return to where it started to
produce a normal prompt(\033[u), and also back to the normal color
(\033[0m).
Example:
$ echo -en "\033[s\033[7B\033[1;34m BASH BASH\033[u\033[0m"
$
BASH BASH
Using tput command:
As with so many things in Unix, there is more than one way to achieve
the same ends.A utility called tput can also be used to move the cursor
around the screen, get back information about the status of the termi-
nal, or set colors.
man tput doesn't go into much detail about the available commands,but
man terminfo will give you a huge list of capabilities, many of which
are device independent, and therefore better than the escape sequences
previously mentioned.
Here is some useful tput capabilities:
tput Cursor Movement Capabilities:
tput cup Y X
Move cursor to screen location X,Y (top left is 0,0)
tput sc
Save the cursor position
tput rc
Restore the cursor position
tput lines
Output the number of lines of the terminal
tput cols
Output the number of columns of the terminal
tput cub N
Move N characters left
tput cuf N
Move N characters right
tput cuu N
up N lines
tput cud N
down N lines
tput Colour Capabilities :
tput setab [1-7]
Set a background colour using ANSI escape
tput setb [1-7]
Set a background colour
tput setaf [1-7]
Set a foreground colour using ANSI escape
tput setf [1-7]
Set a foreground colour
tput Text Mode Capabilities:
tput bold
Set bold mode
tput dim
turn on half-bright mode
tput smul
begin underline mode
tput rmul
exit underline mode
tput rev
Turn on reverse mode
tput smso
Enter standout mode (bold on rxvt)
tput rmso
Exit standout mode
tput sgr0
Turn off all attributes (doesn't work quite as expected).
tput Clear and Insert Capabilities :
tput ech N
Erase N characters
tput clear
clear screen and home cursor
tput el1
Clear to beginning of line
tput el
clear to end of line
tput ed
clear to end of screen
tput ich N
insert N characters (moves rest of line forward!)
tput il N
insert N lines
This is by no means a complete list of what terminfo and tput allow,
in fact it's only the beginning. man tput and man terminfo if you want
to know more.
Example:
$ tput sc;tput cup 4 35;tput setaf 2;echo "Hello World";\
> tput rc;tput sgr0
$
Hello World
Bellow example shows two different ways to achieve same task:
$ tput sc;tput cud 7;tput setaf 4;echo BASH BASH; tput rc;\
> tput sgr0
$ echo -en "\033[s\033[7B\033[0;34m BASH BASH\033[u\033[0m"
Sunday, April 18, 2010
Posted by venu k
12 comments | 8:19 AM
Subscribe to:
Post Comments (Atom)
Nice bro, keep them coming :)
ReplyDeleteHow could you move to column 35 on the current line with tput witout having to specify the line to be on?
ReplyDeletetput cuf 35
DeleteThank You for helping a beginner.
ReplyDeleteVery nicely done, I appreciate it.
ReplyDeleteCharles,
ReplyDeleteMyColumns=`tput cols`
tput cub $MyColumns; tput cuf 35
Thank you so much!
ReplyDeletethanks for share its great help him and tell us how to handle your courser moment and resume for high school students with no experience .
ReplyDeleteHere you can learn a lot. Cool that I hit this blog.
ReplyDeleteThank you for sharing! Glad to hear the information.
ReplyDeleteimgrum
I believe there are many more pleasurable opportunities ahead for individuals that looked at your site...
ReplyDeleteEmbedded System training in Chennai | Embedded system training institute in chennai | PLC Training institute in chennai | IEEE final year projects in chennai | VLSI training institute in chennai
Through check changing frameworks, the troubles of customary keeping money exchanges can be tended to with no issue by any stretch of the imagination. Check Cashing
ReplyDelete