Когда вы запускаете git clone
, он обновляет прогресс на месте. Например, процент полученных объектов меняется на месте.
user@athena:~/cloj/src$ git clone git://git.boinkor.net/slime.git
Initialized empty Git repository in /home/user/cloj/src/slime/.git/
remote: Counting objects: 15936, done.
remote: Compressing objects: 100% (5500/5500), done.
Receiving objects: 28% (4547/15936), 3.16 MiB | 165 KiB/s
Как это осуществляется? Использует ли он ncurses или что-то еще более простое, например, некоторую комбинацию символов возврата и обычного вывода символов?
Меня особенно интересует, как такого рода консольный вывод может быть выполнен из Ruby.
РЕДАКТИРОВАТЬ
Ответ на мой первоначальный вопрос. Но вот дополнение. Когда вы используете MPlayer, например, он обновляет не только строку, чтобы показать текущий прогресс, но и предыдущую строку (например, когда вы нажимаете паузу).
===== PAUSE =====
A: 79.9 (01:19.9) of 4718.0 ( 1:18:38.0) 0.3%
Как бы вы обновили две строки вывода на месте?