有VT100轉義序列的組合,讓我的C程序打印類似:VT100轉義序列去除已經打印的換行符?
等待......
到控制檯,在這樣一種方式,點一個接一個地出現?從本質上講,我想要一個讓我插入額外''的命令。在已經發送的換行符前面。
我正在尋找一個快速的Linux單線程;它不必是便攜式的。對於這個ncurses是矯枉過正的。
有VT100轉義序列的組合,讓我的C程序打印類似:VT100轉義序列去除已經打印的換行符?
等待......
到控制檯,在這樣一種方式,點一個接一個地出現?從本質上講,我想要一個讓我插入額外''的命令。在已經發送的換行符前面。
我正在尋找一個快速的Linux單線程;它不必是便攜式的。對於這個ncurses是矯枉過正的。
一個簡單的方法來做到這一點是使用轉義序列
"\x1b[A"
移動光標了一行。然後,重新打印「Waiting ...」消息,比上一次多一個點。
您可以使用添加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)的,你會用printf「......」沒有\ n或呼應-n
你不能* *相當撤消換行,除非你的影響碰巧知道前一行是多久;終端可以將光標向上移動一行,但不知道向前移動多遠。 –
你有沒有考慮過不輸出換行符?十分簡單。 –