2013-05-25 1 views
1

Я хочу написать несколько строк снова и снова на терминал. Что-то вродеКак переписать несколько строк в сценарии оболочки?

echo "One Line" 
echo "Two Lines" 
echo "\r\b\rThree Lines" 
echo "Four Lines" 

В идеале это будет первый выход:

One Line 
Two Lines 

И этот выход будет затем заменен

Three Lines 
Four Lines 

Проблема, в то время как возврат каретки позволит вам перезаписать одну строку вывода, вы не можете пройти мимо \ n с помощью a \ b. Как переписать несколько строк?

ответ

6

Я нашел решение для этого, которое немного поработало, и я все еще не совсем уверен, как это работает. Однако, похоже, программа tput позволит вам получить специальные символы для очистки линий и поместить курсор. В частности, tput el очистится до начала текущей строки (вместо простого перемещения курсора). Удобно, tput cuu1 перемещает курсор вверх на одну строку. Так что если в вашем Баш скрипт вы объявляете переменные, как:

UPLINE=$(tput cuu1) 
ERASELINE=$(tput el) 

Вы могли бы написать сценарий так:

UPLINE=$(tput cuu1) 
ERASELINE=$(tput el) 
echo "One Line" 
echo "Two Lines" 
echo "$UPLINE$ERASELINE$UPLINE$ERASELINE\c" 
echo "Three Lines" 
echo "Four Lines" 

и вы получите желаемый результат.