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

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

전체 터미널을 차지하는 bash 스크립트에서 이전 세션을 어떻게 복원합니까?

내가 아는 몇 가지 프로그램은 이런 식으로 작동합니다.

  • 레인저
  • 정력
  • 남성
  • 나노

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

답변1

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

예를 들어

tput smcup
clear
echo hello
echo there
read
tput rmcup

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

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

답변2

Bash 스크립트에서 사용할 때 원래 화면의 기록을 사용하거나 clear엉망 으로 만듭니다. tput clear화면은 여전히 ​​있지만 보이는 화면만 있습니다. 모든 역사가 사라졌습니다. (내 경우에는 커서를 왼쪽 위에 위치시켜 작동함) clear로 대체해야 한다는 것을 알아내는 데 오랜 시간이 걸렸습니다 .tput cup 0 0

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

관련 정보