行を更新する代わりに、新しい行に行の変更(「\ r」を使用)を印刷します。

行を更新する代わりに、新しい行に行の変更(「\ r」を使用)を印刷します。

私が知っている限り、多くのプログラム生気そのコマンドライン出力(stdoutまたはstderr)には\rキャリッジリターンがあります。たとえば、apt-get updateパッケージのダウンロード率を更新したり、docker-compose up更新および/または開始されるコンテナのリストにアニメーションを適用したりします。もちろん、何千もの異なる例もあります。

ここに画像の説明を入力してください。

以下が必要です。行を更新するたびに、実際にこの行を新しい行に書き換えます。上記のgifを例にしてみましょう。似たようなものが欲しい。

buntu-22.04.2-deskt   0%[                    ]  25,59M  11,5MB/s               
untu-22.04.2-deskto   0%[>                   ]  30,68M  11,5MB/s               
ntu-22.04.2-desktop   0%[>                   ]  35,21M  11,5MB/s       
tu-22.04.2-desktop-   0%[=>                  ]  40,47M  11,5MB/s       
...        

どうすればいいですか?この機能を使用するすべてのプログラムで動作したいです。

私は試しましたが、うまく command | tr '\r' '\n'いきませんでした。

ベストアンサー1

Curses は端末がサポートするすべてを使用します。 Linux やその他の Unix シリーズシステムでは、ANSI シーケンスを使用します。

たとえば、printf "\033[17;62H"コマンドラインを試してみてください。カーソルが17行と62列に移動するのがわかります。

ウィキペディアのアイテムを見ると、ANSIエスケープコード下にスクロールすると、CSI (Control Sequence Introducer) sequences必要なものがわかります。

正しい文字順でできることが多いので、ページ全体を見ることをお勧めします。

おすすめ記事