2013-01-10 16 views
9

Soweit ich weiß, ist es möglich, den Cursor mit der Rückschrittsequenz in einem echo nach links zu bewegen. Aber gibt es eine Möglichkeit, die vertikale Position des Cursors zu ändern, mit einem Echo?Setzen oder Ändern der vertikalen Position des Cursors

+2

Siehe: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html – miku

Antwort

16

Dieser Abschnitt beschreibt die ANSI-Escape-Sequenzen:

Beispiele:

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" 

Und dieser Abschnitt beschreibt die tput Dienstprogramm:

Für eine Demonstration, Die Floating Uhr in Ihrem Terminal sehen:

Ein Skript Beispiel von http://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html genommen:

#!/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

6

Die Verwendung von echo beschränkt Sie auf einen bestimmten Terminaltyp. Es ist besser, tput zu verwenden.

setzen den Cursor auf Zeile 10 Spalte 4 und drucken "dort" an dieser Position.

Weitere elementare Bewegungen Sie haben tput cub1 nach links zu bewegen, tput cuf1 rechts zu bewegen, tput cuu1 nach oben und tput cud1, um den Cursor nach unten zu bewegen.

+0

... und eine weitere Demonstration von Tldp mit unvollständigen Antworten. – kojiro

1

Ja, wie bereits von miku, ANSI Terminal entkommt, oder ein wenig sauberer ist tput, die auf jedem Endgerät funktionieren sollen:

tput cuu 1    # move cursor up 1 position 
nudgeup=`tput cuu 2` # save it for later 
nudgeleft=`tput cub 2` 
echo -n $nudgeup $nudgeleft 

ein paar Abschnitte nach dem ANSI-Abschnitt in der Eingabeaufforderung Howto BASH See.

tput gibt auch einen Exit-Code zurück, der angibt, ob etwas nicht unterstützt wird.

Verwandte Themen