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この代替画面バッファを削除して消去し、前の画面バッファに戻します。

関連情報