다음과 같은 인위적인 예(올바른 예는 사용자에게 일련의 질문을 안내하고 사용자의 답변 계산을 표준 출력에 반영하는 것임)가 주어지면 하위 명령이 완료된 후 TTY에 대한 수정 사항을 어떻게 지울 수 있습니까?
result="$(echo 'sup' > /dev/tty; echo "$RANDOM"; sleep 2)"; echo "result=[$result]"
답변1
에서 영감을 받다https://stackoverflow.com/a/21319342/130638
result="$(tput smcup > /dev/tty; tput cup 0 0 > /dev/tty; echo 'sup' > /dev/tty; echo "$RANDOM"; sleep 2; tput rmcup > /dev/tty)"; echo "result=[$result]"
설명하다:
tput smcup
대체 화면 버퍼로 교체tput cup 0 0
이 화면 버퍼의 커서를 맨 위로 설정합니다. 그렇지 않으면 이전 위치에 있게 됩니다. 따라서 통화 전에 커서가 화면 중앙에 있었다면 sup도 화면 중앙으로 이동합니다.tput rmcup
이 대체 화면 버퍼를 삭제하고 지우고 이전 화면 버퍼로 다시 바꿉니다.