터미널에서 커서의 위치를 변경하는 법
개요
터미널에서 커서의 위치를 변경하려면 특수한 문자를 출력하면 된다. 이렇게 커서의 위치를 제어해서 출력을 반복하는 기능은 진행상황이나 목록을 지면의 낭비 없이 보여줄 때 유용하다.
\r
: 캐리지리턴이라 불리며, 커서를 현재 줄의 맨 앞으로 이동시킨다.\x1b[1A
: 이전 줄로 이동하는 ANSI 이스케이프 코드이다.\x1b[F
: 현재 줄에서 이전 줄의 맨 앞으로 이동하는 ANSI 이스케이프 코드이다.
여기서 \x1b
는 이스케이프 문자로, ANSI 이스케이프 시퀀스를 시작하는 역할을 한다.
예시
위 움짤은 가상의 로딩화면을 보여주는 줄리아 코드를 실행시킨 것이다. 근본적인 원리는 문자열의 출력이므로 다른 언어라도 비슷한 방식으로 구현할 수 있다.
println("loading...")
for i in 1:100
print("\r", i, "%")
sleep(0.01)
end
print("\x1b[F", "done!", " " ^ 10)