2

是否有 VT100 转义序列的组合允许我的 C 程序打印如下内容:

等待......

到控制台,以使点一个接一个出现的方式?本质上,我想要一个可以让我插入额外的“。”的命令。在已经发送的换行符前面。

我正在寻找一种适用于 linux 的快速单线器;它不必是便携式的。ncurses 对此太过分了。

4

2 回答 2

1

一个简单的方法是使用转义序列

"\x1b[A"

将光标向上移动一行。然后,重新打印“Waiting...”消息,比上次多一个点。

于 2011-10-11T23:49:01.257 回答
1

您可以将 ESC[K(清除到行尾)添加到 ESC[A(上一行),然后打印新行文本

使用 Python 的示例:

import random, time
for _ in range(100):
    print('\x1b[A\x1b[Kthis will print each line cleanly: %d' %(random.randint(0, 100000)))
    time.sleep(0.1)

如果您真的想要整洁,请使用 ESC7(保存光标)和 ESC8(恢复光标)

然后,你写下你的行,最后你使用 ESC7。在打印语句的开头,您使用 ESC8。请注意,除非您关闭自动换行符,否则这在您的 tty 底部不起作用它适用于除底部之外的所有线路。

import random, time

print('this will print each dot cleanly: \x1b7')
for _ in range(10):
    print('\x1b8.\x1b7')
    print('print more foo: %d' %_)
    time.sleep(0.1)

对于 shell 脚本 (bash),您可以使用不带 \n 的 printf "..." 或 echo -n

于 2014-08-03T08:48:18.350 回答