터미널에서 내 프로그램의 출력을 모두(및만) 지우려면 어떻게 해야 합니까?

터미널에서 내 프로그램의 출력을 모두(및만) 지우려면 어떻게 해야 합니까?

ncurses와 같은 것을 사용할 수 있다는 것을 알고 있지만 해당 종속성을 내 프로젝트에 포함하고 싶지 않습니다.

화면을 압도하지 않고 더 많은 정보를 표시할 수 있도록 특정 지점에서 프로그램에 의해 생성된 모든 출력을 지우는 방법을 찾고 있습니다.

이것은 Rust로 작성된 프로그램입니다. 다음과 같은 터미널 처리를 위한 라이브러리가 있습니다.터미널.

ANSI 문자를 옵션으로 사용하는 방법도 읽어보세요.

답변1

호환되는 터미널이 있는 경우 xtermTermion을 사용하여 대체 화면으로 전환해 볼 수 있습니다.

use termion::screen::AlternateScreen;
use std::io::{Write, stdout};

fn main()
{
    {
        let mut screen = AlternateScreen::from(stdout());
        write!(screen, "Writing to alternat(iv)e screen!").unwrap();
        screen.flush().unwrap();
    }
    println!("Writing to main screen again.");
}

~에서Rust 문서: termion::screen

다시 전환하면 작성한 모든 내용이 사라집니다. 전환은 아래 설명된 대로 이스케이프 시퀀스를 실행하여 수행됩니다.StackOverflow: bash 스크립트에서 대체 화면으로 전환. 물론 이는 라이브러리가 반드시 필요하지는 않다는 것을 의미합니다.

관련 정보