
從佔據整個終端的 bash 腳本中,如何恢復先前的會話?
我知道有些程式是這樣運作的:
- 護林員
- 維姆
- 男人
- 奈
常見的模式是:程式佔用整個終端,然後在退出時恢復所有內容,即輸入的命令和列印的輸出。
答案1
您應該使用 terminfocup
選項。這可以透過 shell 使用命令來完成tput
。
例如
tput smcup
clear
echo hello
echo there
read
tput rmcup
這將清除螢幕,列印兩行,等待您按 RETURN,然後將螢幕恢復到先前的位置。
terminfo
當然,這需要您的終端定義來支援這一點。並非所有終端都具備該功能。
答案2
在 bash 腳本中使用時,使用clear
或會弄亂原始螢幕的歷史記錄。tput clear
螢幕仍然存在,但只是可見的螢幕。所有的歷史都消失了。我花了很長時間才發現clear
必須將其替換為tput cup 0 0
(在我的情況下通過將遊標定位在左上角來工作)。
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup