什么是可以持续更新同一行的命令行工具?

时间:2012-09-16 15:00:42

标签: backgroundworker stdout

我使用RTMPDump下载媒体流,我想将输出重定向到我可以控制的流,这样我就可以解析进度并做一些事情。但是,该程序与许多命令行工具一样,在同一行中显示了进度,然后在程序运行时不断更新。它看起来像这样吗?

44929.160 kB / 556.34 sec

我的问题是:这是某种特殊字符删除一个字符或行,使程序能够重写同一行吗?或者还有其他事情发生了吗?

2 个答案:

答案 0 :(得分:2)

一种简单的方法是在每行的开头打印回车符:

# Using bash as an example
for i in {0..10}; do
  printf "\r%s" $i
  sleep 1
done

使用ANSI转义码可以更精确地定位光标,从而可以实现更复杂的格式化。

答案 1 :(得分:1)

如果你想写同一行,你必须删除字符并用新字符覆盖它们。您可以通过提供适当数量的backspaces来删除字符。 另一个选择是清除完整的控制台然后重写它。这可以通过System("cls");(Windows上的C ++)来完成。