문제

일부 프로그램은 터미널에 표시되는 내용을 어떻게 편집합니까(예: '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가 좋은 방법입니다.다음은 좋은 튜토리얼입니다:

http://tldp.org/HOWTO/NCURSES-프로그래밍-HOWTO/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top