"이전" 스크롤백 버퍼 지우기

"이전" 스크롤백 버퍼 지우기

중복된 질문인 것 같지만 그렇지 않습니다.

"현재" 세션의 스크롤백 버퍼를 지우는 데 사용할 수 있다는 것을 알고 있지만 printf "\033f"이전 세션에서는 작동하지 않습니다.

내 문제는 XVP 뷰어(VNC 기반 Java 웹 브라우저)를 통해 여러 가상 머신에 액세스하고 로그아웃하기 전에 화면을 지우려고 노력하지 않으면 화면을 스크롤하여 모든 것을 볼 수 있다는 것입니다.

이 오래된 스크롤백 버퍼를 지우는 방법을 제안해 주세요.

추신: 재부팅하면 지워지지만 프로덕션 VM에서는 수행할 수 없습니다.

답변1

Linux 커널은 (적어도 2011년)부터 몇 줄을 건너뛰는 대신 롤백을 지우는 제어 시퀀스를 지원해 왔습니다.

printf '\033[3J'

ncurses 변경 사항에서 언급됨2011년 7월 16일:

    + add E3 extended capability to linux-basic (Miroslav Lichvar)
    + add linux2.2, linux2.6, linux3.0 entries to give context for E3 -TD

그리고 설명했다터미널 데이터베이스:

# The 3.0 kernel adds support for clearing scrollback buffer (capability E3).
# It is the same as xterm's erase-saved-lines feature.
linux3.0|linux 3.0 kernels,
        E3=\E[3J, use=linux2.6,

이는 1999년 6월 xterm에 추가된 기능이 Linux 콘솔에서 응용 프로그램의 보안을 향상시키는 데 유용하다는 버그 보고서에서 언급되었습니다.

이후에 (에서2013년), (사용된 터미널 설명에 따라) 유틸리티가 롤백을 지울 수 있도록 기능이 유틸리티 E3에 추가되었습니다 . clear~에 대한Ctrl+l동일한 이스케이프 시퀀스가 ​​하드코딩되어 있을 수 있는 bash 단축키를 참조합니다(터미널 데이터베이스가 clear(또는 ed) 및 E3기능을 함께 바인딩하지 않기 때문입니다).

추가 자료:

답변2

나는 이것을 수행하는 다른 방법을 찾았습니다. 기본적으로 콘솔 화면에는 510개의 라인 버퍼(제 경우)가 있으므로 echo511번을 입력하면 해당 라인이 모두 채워지고 이전 데이터가 지워집니다.

echo루프 내부에서 사용합니다 .for

for i in {0..510}
 do
    echo
 done

이전 bash 프롬프트에서 seq작동합니다 .

for i in `seq 0 510`
 do
    echo
 done

관련 정보