运行 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

相关内容