쉘 스크립트 실행 후 세션 복원

쉘 스크립트 실행 후 세션 복원

전체 터미널을 차지하는 bash 스크립트에서 이전 세션을 복원하는 방법은 무엇입니까?

일부 프로그램은 다음과 같이 작동한다는 것을 알고 있습니다.

  • 숲지기
  • 남성
  • 나노미터

일반적인 패턴은 프로그램이 전체 터미널을 차지한 다음 종료 시 모든 것, 즉 입력된 명령과 인쇄된 출력을 복원하는 것입니다.

답변1

terminfo 옵션을 사용해야 합니다 cup. 이 작업은 셸에서 명령을 사용하여 수행할 수 있습니다 tput.

예를 들어

tput smcup
clear
echo hello
echo there
read
tput rmcup

이렇게 하면 화면이 지워지고 두 줄이 인쇄되며 RETURN을 누를 때까지 기다린 다음 화면을 이전 위치로 복원합니다.

terminfo물론 이를 지원하려면 터미널 정의가 필요합니다. 모든 터미널에 이 기능이 있는 것은 아닙니다.

답변2

bash 스크립트에서 clearor를 사용하면 원래 화면의 기록이 엉망이 됩니다 . tput clear화면은 그대로 있지만 보이는 화면일 뿐입니다. 모든 역사가 사라졌습니다. clear그것을 대체해야 한다는 것을 알아내는 데 오랜 시간이 걸렸습니다 tput cup 0 0(제 경우에는 커서를 왼쪽 상단에 위치시켜 작동했습니다).

tput smcup
tput cup 0 0  # position cursor top left, simulate clear
...script
tput rmcup

관련 정보