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

관련 정보