
ターミナル全体を占有する bash スクリプトから、以前のセッションを復元するにはどうすればよいですか?
私が知っているいくつかのプログラムはこのように動作します:
- 部隊
- ヴィム
- 男
- ナノ
一般的なパターンは次のとおりです。プログラムがターミナル全体を乗っ取り、終了時にすべてが復元されます (つまり、入力されたコマンドと印刷された出力)。
答え1
terminfocup
オプションを使用する必要があります。これは、コマンドを使用してシェルから実行できますtput
。
例えば
tput smcup
clear
echo hello
echo there
read
tput rmcup
これにより、画面がクリアされ、2 行が印刷され、RETURN キーが押されるまで待機してから、画面が以前の状態に戻ります。
terminfo
もちろん、これをサポートするには端末の定義が必要です。すべての端末にこの機能があるわけではありません。
答え2
clear
bash スクリプトでまたはを使用tput clear
すると、元の画面の履歴が台無しになります。画面は残っていますが、表示されている画面のみです。履歴はすべて失われます。clear
を に置き換える必要があることを知るのに長い時間がかかりましたtput cup 0 0
(私の場合は、カーソルを左上に配置することで機能します)。
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup