【发布时间】:2015-11-01 05:54:54
【问题描述】:
我注意到很多命令行工具(例如 wget)会将进度显示为数字或进度条,该进度条会随着进程的完成而前进。虽然这个问题并不是真正特定于语言的,但在我最常用于命令行工具的语言(C++、Node.js、Haskell)中,我还没有看到一种方法来做到这一点。
这里是一个例子,当 wget 下载一个文件时,终端的 单行 的三个快照:
与其他信息一起,wget 会显示一个进度条 (),它会在下载文件时前进。到目前为止下载的数据量(6363、179561、316053)和当前下载速度(10.7KB/s、65.8KB/s、63.0KB/s)也会更新。这是怎么做到的?
理想情况下,请包含来自上述三种语言中的一种或多种语言的代码示例。
【问题讨论】:
-
我猜他们使用的是原生 api
-
他们可能使用ncurses
-
Haskell 有一个漂亮、简单的
ncursesAPI:hackage.haskell.org/package/ncurses -
穷人的单行ncurses:输出
\r到行首再画一遍。
标签: c++ node.js haskell command-line terminal