docker compose 出力の端末出力が破損しています。

docker compose 出力の端末出力が破損しています。

Docker Composeのログがどのように見えるかに問題があります。以下のように何とか破損しているようです。

ここの写真

==> Emulator is ready : '1'"please wait"ご覧のとおり、以前の出力は完全に上書きされません。

さらに、以前の出力が出力に表示されないのはなぜかわかりませんが、私が書いたシェルスクリプト関数です。

function check_emulator_status () {
  printf "${G}==> ${BL}Checking emulator booting up status 

答え1

\n行の最後まで消去してはいけません。内容は変更されていないままにしてください。独立コマンド

printf 'abcdef\rghi\n'

ghidef代わりに印刷が終了します。ghiこれは意図的に設計されています。\rカーソルを行の先頭に移動して上書きしますが、ghiそのabcままにdefします。

行の最後まで消去するには、\e[K(行から消去)エスケープシーケンスを使用できます.したがって、このコマンドは次のように表示されますghi

printf 'abcdef\r\e[Kghi\n'

(注:\e[K新しいテキストの終わりではなく行の先頭からエクスポートします。カーソルが次の行に移動しようとすると、シーケンスの動作が混乱するためです。新しいテキストがユーザーのテキストと同じ場合は問題が発生します。)この端末エミュレータほど広いと、視覚的な欠陥が発生する可能性があります。

状況をより複雑にすることは、明らかに印刷されたコンテンツが端末に直接移動するのではなく、一部のDockerコンポーネントが端末test |の前にターコイズテキストを追加することです。この前に追加のタスクを実行するエンジンは明らかに適切な処理の準備ができていないため、以前の\r出力をオーバーライドする「正しい」動作を達成できない可能性があります。この理論が確認されたら、そのソフトウェアの機能を要求することをお勧めしますtest |\r

関連情報