예를 들어 내 문제를 설명할 수 있습니다. 명령의 예를 들어 보겠습니다
man
. 터미널에서 이 명령을 실행하면 새 창에서 페이지가 열리고 터미널 문제에서 이전에 수행한 작업을 볼 수 없습니다. 어떻게 해야 하나요?
저는 터미널 애플리케이션을 작업 중인데 비슷한 방식으로 작동하길 원합니다. 애플리케이션 이름을 입력하면 새 페이지가 열리게 됩니다.
편집: Vim의 예, vim
터미널에 입력하는 동안 vim을 열면 해당 인터페이스가 화면에 표시됩니다. 내가 만들고 있는 앱으로 어떻게 이런 일을 할 수 있나요?
답변1
당신이 요구하는 것을 대체 화면 버퍼라고 하며, 응용 프로그램은 ESC 코드를 터미널로 보내 대체 화면으로 전환하거나 대체 화면에서 전환합니다.
애플리케이션이 ncurses 라이브러리를 사용하는 경우 이를 수행하는 함수가 있습니다. 쉘 스크립트에서 이 작업을 수행하려면 tput
적절한 코드를 보내면 됩니다.
tput smcup # switch to alt screen
tput rmcup # switch back from alt screen
참고: 전부는 아니지만 대부분의 터미널 에뮬레이터가 이 기능을 지원합니다. 그렇지 않은 사람들(또는 일부 터미널 에뮬레이터의 옵션인 비활성화된) 사람들은 단순히 코드를 무시합니다.