是否有任何本机或第三方工具可以恢复所有打开的终端窗口及其路径和命令行历史记录?
(不是休眠,重启后我需要这个(例如,内核更新后)。)
Ubuntu 15.04,Unity shell。
答案1
首先,我不知道有这样的事存在。其次,这不是完整的答案,只是部分答案,但我不能发表评论,只能回答问题。
我已经完成了部分工作,打开一个 gnome-terminal,恢复上一个终端会话的命令历史记录(我用它来在漫长的软件测试期间捕获命令)。您不需要单独捕获历史记录,只需指定终端应使用的文件即可。将此脚本命名为“myterm”:
#/bin/bash
TERMDIR=~/.myterms
if [ ! -d $TERMDIR ] ; then
mkdir $TERMDIR
fi
TERMUID=$1
if [ -z "$TERMUID" ] ; then
# generate unique id for new terminal
TERMUID="`basename \`tty\``-`date +'%s'`"
fi
HISTFILE=$TERMDIR/$TERMUID gnome-terminal
因此,不带参数执行 myterm 将在 TERMDIR 中放置一个新的历史文件。如果稍后您使用 TERMDIR 中的一个文件名作为参数执行 myterm,它将恢复该终端的历史记录。如果您有一组固定的终端,您也可以放弃随机 uid 生成,而只使用固定名称。
我知道你想做的远不止这些,但有一个要求我不清楚——如果你手动关闭终端,你是否需要忘记它?即删除其历史记录并在登录时不重新打开?这可能有点棘手,因为我不确定如何在注销或关机期间检测手动关闭而不是强制关闭。
通过扫描 TERMDIR 可以很简单地在登录时重新打开终端;即,历史文件的存在标志着需要该终端。
更困难的是切换到最后一个工作目录。每个子终端在关闭时通过 $PWD 知道其目录,但当然 myterm 无法读取子环境以将其写入存储。如果它是已知,但是;只需使用
HISTFILE=$TERMDIR/$TERMUID gnome-terminal --working-directory somedir
您可能需要编写一个在用户会话期间运行的监视器来
- 检测终端何时关闭并删除其历史记录
- 定期检测工作目录并存储该目录
取决于您的要求。