私のCプログラムが次のようなものを出力できるようにするVT100エスケープシーケンスの組み合わせはありますか?
待っている......
ドットが 1 つずつ表示されるような方法で、コンソールに? 基本的に、余分な「。」を挿入できるコマンドが必要です。すでに送信された改行の前。
Linux の簡単なワンライナーを探しています。ポータブルである必要はありません。これにはncursesはやり過ぎです。
これを行う簡単な方法は、エスケープ シーケンスを使用することです。
"\x1b[A"
カーソルを1 行上に移動します。次に、「Waiting...」メッセージを、前回よりも 1 つ多くドットを付けて再印刷します。
ESC[K (行末まで消去) を ESC[A (1 行上) に追加し、新しい行のテキストを出力できます。
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)
シェル スクリプト (bash) の場合、\n なしで printf "..." を使用するか、echo -n を使用します。