문제
일부 프로그램은 터미널에 표시되는 내용을 어떻게 편집합니까(예: 'sl' 프로그램)?여기서는 Linux 터미널을 생각하고 있는데 다른 OS에서도 이런 일이 발생할 수 있는지는 모르겠습니다.나는 항상 어떤 텍스트가 표시되면 그대로 유지된다고 생각했습니다.전체 화면을 다시 그리지 않고 어떻게 변경합니까?
다른 팁
터미널에 따라 제어 시퀀스를 보냅니다.일반적인 시퀀스는 예를 들어 커서를 특정 위치로 보내는 esc[;H입니다.Ansi, Xterm, Linux, VT100).그러나 이는 사용자가 사용하는 단말기 유형이나 단말기에 따라 다릅니다.curses(terminfo 파일과 함께)가 해당 정보를 래핑합니다.
이 쉘스크립트를 사용해 보세요
#!/bin/bash
i=1
while [ true ]
do
echo -e -n "\r $i"
i=$((i+1))
done
-n 옵션은 개행을 방지합니다 ... 은 캐리지 리턴을 수행합니다 ...같은 줄에 계속해서 글을 씁니다. 스크롤링이나 기타 등등은 없습니다.
줄 바꿈(' ') 대신 캐리지 리턴(' ')을 사용하여 터미널로 보낸 줄을 종료하면 커서가 현재 줄의 시작 부분으로 이동하여 프로그램이 더 많은 텍스트를 인쇄할 수 있습니다. 이전에 인쇄한 것보다 위에 있습니다.나는 가끔 긴 작업의 진행 메시지에 이것을 사용합니다.
그보다 더 많은 터미널 편집이 필요한 경우 다음을 사용하십시오. 저주를 받다 또는 그 변형.
커서를 뒤로 이동시키는 터미널로 보낼 수 있는 문자가 있습니다.그런 다음 텍스트를 덮어쓸 수 있습니다.
목록이 있습니다 여기."커서 이동" 줄을 참고하세요.
NCurses는 스마트 터미널에 사용자 인터페이스를 그릴 수 있는 크로스 플랫폼 라이브러리입니다.
Touchy 상병은 이것이 가장 낮은 수준에서 어떻게 수행되는지 답변했습니다.보다 쉬운 개발을 위해 저주 도서관 단순히 문자를 터미널에 보내는 것보다 더 높은 수준의 제어를 제공합니다.
@Corporal Touchy의 답변을 바탕으로 다음과 같은 일부 기능을 처리할 수 있는 라이브러리가 있습니다. 저주/저주
나는 danio의 말에 동의합니다. ncurses가 좋은 방법입니다.다음은 좋은 튜토리얼입니다: