Как удалить и заменить последнюю строку в терминальном ударе использования?

Я хочу реализовать истекшие секунды показа индикатора выполнения в ударе. Для этого я должен стереть последнюю строку, показанную на экране ("четкая" команда стирает весь экран, но я должен стереть только строку индикатора выполнения и заменить его новой информацией).

Конечный результат должен быть похожим:

$ Elapsed time 5 seconds

Затем после 10 секунд я хочу заменить это предложение (в том же положении на экране):

$ Elapsed time 15 seconds
90
задан Debugger 5 September 2013 в 12:46
поделиться

3 ответа

введите возврат каретки с помощью \ r

seq 1 1000000 | while read i; do echo -en "\r$i"; done

из man echo:

-n     do not output the trailing newline
-e     enable interpretation of backslash escapes

\r     carriage return
109
ответ дан 24 November 2019 в 06:54
поделиться

Используйте символ возврата каретки:

echo -e "Foo\rBar" # Will print "Bar"
4
ответ дан 24 November 2019 в 06:54
поделиться

Самый простой способ - использовать \ r персонаж, наверное.

Недостатком является то, что у вас не может быть полных строк, так как это очищает только текущую строку.

Простой пример:

time=5
echo -n "Elapsed $time seconds"
sleep 10
time=15
echo -n "Elapsed $time seconds"

echo "\nDone"
-2
ответ дан 24 November 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: