如何记录所有终端会话并在关闭窗口后正确退出

时间:2017-03-11 09:17:22

标签: linux shell terminal zsh

我正在尝试设置我的环境,以便asciinema自动记录所有已打开的终端会话,以便能够轻松地重播我的历史记录中的任何内容。

我使用zsh shell,我在.zshrc中运行它:

if [ "$ASCIINEMA_REC" != "1" ]; then
    local out="rec.json"
    local loc="$HOME/.asciinema"

    if [ -d "${loc}" ]; then
        out="${loc}`pwd`/rec_`date +'%Y-%b-%d_%H-%M-%S'`_pts-`basename $TTY`.json"
        mkdir -p "`dirname ${out}`"
    fi

    asciinema rec -q -w 1 ${out}; 
fi

然而问题是当我关闭终端窗口时(使用 X )。输出未正确关闭并最终为空。此外,初始化需要更长的时间,因为它初始化zsh shell两次。

1 个答案:

答案 0 :(得分:1)

我会尝试trap SIGHUPEXIT,这样您就可以在终端关闭时处理清理命令。

trap 'command' SIGHUP EXIT

因此,在您的情况下,可能确保关闭伪终端正确运行asciinema

也许:

trap 'exit 0;' SIGHUP EXIT # Should exit the current terminal session, hopefully the asciinema one!

参考:Which signals are sent when closing a terminal