Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set or change vertical position of the cursor

Tags:

bash

As far as I know, it is possible to move the cursor to the left using the backspace sequence in an echo. But is there any possibility to change the vertical position of the cursor, using an echo?

like image 882
clx Avatar asked Jan 10 '13 13:01

clx


Video Answer


2 Answers

This section describes the ANSI escape sequences:

  • http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

Examples:

echo -en "\033[s\033[7B\033[1;34m 7 lines down violet \033[u\033[0m"
echo -en "\033[s\033[7A\033[1;32m 7 lines up green \033[u\033[0m"

And this section describes the tput utility:

  • http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html

For a demonstration, see The floating clock in your terminal:

  • http://tldp.org/HOWTO/Bash-Prompt-HOWTO/clockt.html

An example script taken from http://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html:

#!/bin/bash

tput clear      # clear the screen

tput cup 3 15   # Move cursor to screen location X,Y (top left is 0,0)

tput setaf 3    # Set a foreground colour using ANSI escape
echo "XYX Corp LTD."
tput sgr0

tput cup 5 17
tput rev        # Set reverse video mode
echo "M A I N - M E N U"
tput sgr0

tput cup 7 15; echo "1. User Management"
tput cup 8 15; echo "2. Service Management"
tput cup 9 15; echo "3. Process Management"
tput cup 10 15; echo "4. Backup"

tput bold       # Set bold mode 
tput cup 12 15
read -p "Enter your choice [1-4] " choice

tput clear
tput sgr0
tput rc

tput example

like image 65
miku Avatar answered Sep 22 '22 06:09

miku


Using echo will restrict you to a specific terminal type. It is better to use tput.

tput cup 10 4; echo there

will put cursor on row 10 column 4 and print “there” at that position.

For more elementary movements you have tput cub1 to move left, tput cuf1 to move right, tput cuu1 to move up and tput cud1 to move the cursor down.

like image 34
kmkaplan Avatar answered Sep 23 '22 06:09

kmkaplan