GNU 화면이 종료될 때 화면이 지워지는 것을 방지하는 방법은 무엇입니까?

GNU 화면이 종료될 때 화면이 지워지는 것을 방지하는 방법은 무엇입니까?

내가 달릴 때

$ screen id

[screen is terminating]화면 상단의 메시지 만 볼 수 있습니다 . 내가 보고 싶은 것은 명령의 출력 id과 메시지입니다. [screen is terminating]나는 그를 통해 얻을 수 있습니다 :

$ TERM=vt102 screen id

이 경우 screen(1)은 화면을 지우지는 않지만 마지막에 많은 빈 줄을 표시하므로 위로 스크롤하여 볼 수 있습니다 id.

TERM=vt102하지만 좀 더 고급 터미널 기능이 필요하기 때문에 사용하고 싶지 않습니다 .

종료 시 화면(1)이 화면을 지우는 것을 방지하는 방법은 무엇입니까?

답변1

screen이것은 터미널 에뮬레이터라는 점에 유의하십시오 . 따라서 귀하의 질문은 시작하는 방법 xterm과 종료 시 gnome-terminal마지막으로 표시된 콘텐츠가 표시되도록 하는 방법을 묻는 것과 같습니다 .xtermgnome-terminalxterm

xterm지금과 다른 점은 화면을 그리는 데에는 X 프로토콜을 사용하고 호스트 터미널을 사용한다는 screen점입니다 .xtermscreen

기본적으로 screen호스트 터미널의 화면은 자체 에뮬레이트된 터미널을 표시하기 위해 지워지며, 사용 가능한 경우 해당 터미널이 사용됩니다.대체 화면(지우기 전) 호스트 터미널이 종료되면 시작되기 전의 호스트 터미널 상태를 복원할 수 있도록 합니다.

그래서 당신이 보는 것은 screen떠날 때 화면을 지우는 것이 아니라 호스트 터미널의 홈 화면을 복원하는 것입니다. 마지막으로 표시된 창의 내용은 screen여전히 ​​대체 화면에 존재합니다. 를 사용하면 xterm선택하여 볼 수 있습니다.대체 화면 표시메뉴에서 Ctrl+마우스 가운데 버튼을 클릭하세요.

호스트 터미널이 대체 화면(예: vt102)을 지원하지 않으면 이는 분명히 불가능합니다. 대신 기본적으로 원하는 것은 아무것도 하지 않습니다.

따라서 당신이 할 수 있는 일은 screen터미널이 대체 화면을 지원하지 않는다는 것을 호스트에게 알리는 것입니다. 이렇게 하려면 다음을 추가하면 됩니다 ~/.screenrc.

 termcapinfo * ti=:te=

즉, 가능한 모든 호스트 터미널( *, 과 일치 $TERM) 에 대해 termcap/terminfo데이터베이스를 재정의하여 이러한 터미널에 대해 대체 화면에 들어가거나 나가는 이스케이프 시퀀스가 ​​빈 문자열임을 나타냅니다.

tite정확히는 의미 하지 않는다대체 화면. ~에서https://www.gnu.org/software/termutils/manual/termcap-1.3/html_node/termcap_39.html:

  • ti( smcupin terminfo)
    화면 주위에서 커서를 비순차적으로 이동하는 프로그램에 필요하거나 적합한 특수 모드로 터미널을 전환하는 데 사용되는 명령 문자열입니다. 전체 화면 표시를 위해 termcap을 사용하는 프로그램은 시작 시 이 문자열을 출력해야 합니다.

  • te( rmcupin terminfo)
    문자열에 의해 수행된 작업을 실행 취소하는 데 사용되는 명령 문자열입니다 ti. 시작 시 "ti" 문자열을 인쇄하는 프로그램은 종료 시 해당 문자열을 인쇄해야 합니다.

그러나 이것은 다음과 같이 번역됩니다.대체 화면대부분의 터미널 에뮬레이터의 경우(구체적으로 xterm대체 화면커서 위치 저장/복원)

관련 정보