是否存在VT100转义序列的组合,这将允许我的C程序打印如下内容:
等待......
到一个控制台,以这种方式逐个出现点?基本上,我想要一个命令,让我插入一个额外的'。'在已经发送的换行符前面。
我正在为linux寻找快速的单行程序;它不必是便携式的。 ncurses对此有点过分了。
答案 0 :(得分:1)
一种简单的方法是使用转义序列
"\x1b[A"
将光标向上移动一行。然后,重新打印“等待...”消息,比上一次多一个点。
答案 1 :(得分: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。在print语句的开头,您使用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),你可以使用printf" ..."没有\ n,或者echo -n