如何更新命令行输出?

coa*_*nor 9 c linux command-line

在Linux中,在stdout命令行中,我想更新特定区域,例如apt-get输出:

54% [Waiting for headers] [Waiting for headers]        211 kB/s 3s
Run Code Online (Sandbox Code Playgroud)

百分比,千字节/秒第二将更新每一秒.

如果我们使用printf那么我们将获得多行输出.我试过以下printf:

printf("\e[1;1H\e[2J");
Run Code Online (Sandbox Code Playgroud)

但它清除了所有输出.

我的问题是如何更新特定区域并保持其他区域稳定?

ick*_*fay 8

使用回车.它会将光标移回到行的开头,您可以从该行开始覆盖行中的内容.例如:

printf("Hello, world!\rX");
Run Code Online (Sandbox Code Playgroud)

将显示为:

Xello, world!
Run Code Online (Sandbox Code Playgroud)

stdout如果您希望它可见,请确保经常刷新:

fflush(stdout);
Run Code Online (Sandbox Code Playgroud)