TTY 변경 사항을 지우는 bash 하위 명령을 얻으려면 어떻게 해야 합니까?

TTY 변경 사항을 지우는 bash 하위 명령을 얻으려면 어떻게 해야 합니까?

다음과 같은 인위적인 예(올바른 예는 사용자에게 일련의 질문을 안내하고 사용자의 답변 계산을 표준 출력에 반영하는 것임)가 주어지면 하위 명령이 완료된 후 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이 대체 화면 버퍼를 삭제하고 지우고 이전 화면 버퍼로 다시 바꿉니다.

관련 정보