제가 아는 한 많은 프로그램이생기해당 명령줄 출력( 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
필요한 것이 무엇인지 알 수 있습니다.
올바른 문자 순서로 할 수 있는 일이 많기 때문에 전체 페이지를 살펴보는 것이 좋습니다.