dan*_*dan 32 ruby unix terminal ncurses
当您运行时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
Run Code Online (Sandbox Code Playgroud)
这是如何完成的?它是否使用ncurses或更简单的东西,比如退格字符和常规字符输出的某种组合?
我对如何通过Ruby实现这种控制台输出特别感兴趣.
编辑
我原来的问题得到了回答.但这是一个附录.例如,当您使用MPlayer时,它不仅会更新一行以显示当前进度,还会更新前一行(例如,当您按下暂停时).
===== PAUSE =====
A: 79.9 (01:19.9) of 4718.0 ( 1:18:38.0) 0.3%
Run Code Online (Sandbox Code Playgroud)
您如何在适当的位置更新两行输出?
...
eol = done ? done : " \r";
...
fprintf(stderr, "...%s", ..., eol);
fflush(stderr);
Run Code Online (Sandbox Code Playgroud)
Git只是发出一个回车而没有换行,终端将其解释为"移动到第一列".