私が知っている限り、多くのプログラム生気そのコマンドライン出力(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
必要なものがわかります。
正しい文字順でできることが多いので、ページ全体を見ることをお勧めします。