如何更新命令行输出?(How to update command line output?)

2019-08-18 06:51发布

在Linux中,虽然stdout到命令行,我想要更新的特定区域,如apt-get输出:

54% [Waiting for headers] [Waiting for headers]        211 kB/s 3s

百分比 ,KB / s第二将更新每一秒。

如果我们使用printf那么我们将获得多条线路输出它们。 我曾尝试以下printf

printf("\e[1;1H\e[2J");

但它清除所有的输出。

我的问题是如何更新特定区域以防止他人稳定吗?

Answer 1:

使用回车。 将光标移动回线,从中可以覆盖什么是前行的开始。 例如:

printf("Hello, world!\rX");

将显示为:

Xello, world!

确保你刷新stdout的时候,如果你希望它是可见的:

fflush(stdout);


Answer 2:

另外(有用的\rfflush 建议以上),如果你想要一个全屏幕的控制台输出,可以考虑使用ncurses的 。 如果你想要一个可编辑输入线,在GNU的readline库是有用的呢!



文章来源: How to update command line output?