長時間実行されるタスクの場合、進行状況を表示したいと思います。現在\33[2K\r
、コマンドの開始時に使用しておりprintf
、最後に改行などはありません。このアプローチで私が気に入らないのは、同じ端末に出力されたメッセージ (stderr
リダイレクトなしなど) が、新しいメッセージではなく行末に表示されることです。
進行状況表示の最後に を配置する\r
と、他のメッセージ (すべて で終了\n
) が進行状況表示を視覚的に上書きし、それよりも短い場合は残りと混同されます。また、それらのメッセージの一部は外部ライブラリからのものであるため、これらの他のメッセージを出力する行を調整する必要はありません/できません。
その後、進行状況表示が新しい行に続く場合は問題ありませんが、別の行に他のメッセージを表示したいと思います (主にエラーメッセージですが、可能な限り正常に回復しようとしています) 、したがって、プロセスはほとんどの場合継続します)
何か案は?
移植性は必要ありません。Linux bash のみで動作する場合は問題ありません。
Upd:私が求めているものをよりよく視覚化するために:
現在、私はできる:
status1ERR
status2
または
ERRtus1
status2
または
status1
status2 <--- ERR is overriden by status2 here
しかし、私が欲しいのは:
status1
ERR
status2
または
ERR
status2
最後の例では、ERR は完全なステータス行をオーバーライドします。前述の VT100 文字シーケンスで行をクリアできることはわかっていますが、一部のエラー メッセージを変更できないため、常に次の形式で動作する必要があります。error message\n