2013-01-10 46 views
9

Theo như tôi biết, có thể di chuyển con trỏ sang trái bằng cách sử dụng trình tự lùi trong một echo. Nhưng có bất kỳ khả năng nào để thay đổi vị trí thẳng đứng của con trỏ, sử dụng một tiếng vang echo không?Đặt hoặc thay đổi vị trí dọc của con trỏ

+2

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

Trả lời

16

Phần này mô tả trình tự thoát ANSI:

Ví dụ:

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" 

Và phần này mô tả các tiện ích tput:

Đối với một cuộc biểu tình, xem Đồng hồ nổi trong terminal của bạn:

Một đoạn mã ví dụ lấy từ 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

6

Sử dụng echo sẽ giới hạn bạn đối với loại thiết bị đầu cuối cụ thể. Nó là tốt hơn để sử dụng tput.

tput cup 10 4; echo there 

sẽ đặt con trỏ trên hàng 10 cột 4 và in “đó” tại vị trí đó.

Để có nhiều chuyển động cơ bản hơn, bạn có tput cub1 để di chuyển sang trái, tput cuf1 để di chuyển sang phải, tput cuu1 để di chuyển lên và tput cud1 để di chuyển con trỏ xuống.

+0

… và một minh chứng khác về tldp có câu trả lời chưa hoàn chỉnh. – kojiro

1

Vâng, như ghi nhận của miku, ANSI terminal thoát, hoặc một chút bụi là tput mà nên làm việc trên bất kỳ thiết bị đầu cuối:

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

Xem một vài phần sau phần ANSI trong howto nhắc BASH.

tput cũng trả lại mã thoát cho bạn biết điều gì đó không được hỗ trợ.

Các vấn đề liên quan