運行 shell 腳本後恢復會話

運行 shell 腳本後恢復會話

從佔據整個終端的 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

相關內容