전체 터미널을 차지하는 bash 스크립트에서 이전 세션을 복원하는 방법은 무엇입니까?
일부 프로그램은 다음과 같이 작동한다는 것을 알고 있습니다.
- 숲지기
- 윔
- 남성
- 나노미터
일반적인 패턴은 프로그램이 전체 터미널을 차지한 다음 종료 시 모든 것, 즉 입력된 명령과 인쇄된 출력을 복원하는 것입니다.
답변1
terminfo 옵션을 사용해야 합니다 cup
. 이 작업은 셸에서 명령을 사용하여 수행할 수 있습니다 tput
.
예를 들어
tput smcup
clear
echo hello
echo there
read
tput rmcup
이렇게 하면 화면이 지워지고 두 줄이 인쇄되며 RETURN을 누를 때까지 기다린 다음 화면을 이전 위치로 복원합니다.
terminfo
물론 이를 지원하려면 터미널 정의가 필요합니다. 모든 터미널에 이 기능이 있는 것은 아닙니다.
답변2
bash 스크립트에서 clear
or를 사용하면 원래 화면의 기록이 엉망이 됩니다 . tput clear
화면은 그대로 있지만 보이는 화면일 뿐입니다. 모든 역사가 사라졌습니다. clear
그것을 대체해야 한다는 것을 알아내는 데 오랜 시간이 걸렸습니다 tput cup 0 0
(제 경우에는 커서를 왼쪽 상단에 위치시켜 작동했습니다).
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup