docker compose 输出中的终端输出已损坏

docker compose 输出中的终端输出已损坏

我面临着 docker compose 中的日志看起来如何的问题,似乎不知何故损坏,如下所示

图片在这里

==> Emulator is ready : '1'"please wait"如您所见, 并没有完全覆盖以前的输出。

另外,之前的输出没有显示在输出中,不知道为什么,这是我编写的 shell 脚本函数

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.

相关内容