답변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