Однажды я увидел консольное приложение, которое визуализировало ход нескольких загрузок с несколькими индикаторами выполнения, каждая из которых была отдельной строкой. Мне было любопытно, как это сделать, но я нашел только частичные решения. Вот они:
Один индикатор прогресса прост
Легко очистить одну строку с помощью «возврат каретки» и, таким образом, визуализировать один индикатор выполнения, как это обсуждается например. в этом вопросе . Прост в использовании, также существует множество вспомогательных библиотек.
"использовать ncurses"
Все говорят: "Используйте ncurses". Но, насколько я знаю, каждая программа ncurses должна начинаться с вызова initscr()
, который действительно очищает весь экран. Ваше приглашение исчезло, история вашего терминала исчезла. Это не то, что я хочу.
Использовать terminfo из ncurses
Используйте возможности sc
, ed
и rc
из terminfo
, чтобы проиллюстрировать этот скрипт Bash (скрипт взят из этого вопроса ):
tput sc; while [ true ]; do tput ed; echo -e "$SECONDS\n$SECONDS\n$SECONDS"; sleep 1; tput rc; done
Это работает, но только в xterm
. Мой термин urxvt
игнорирует его, как, например, terminator
.
Так, каковы другие варианты?