按需记录 zsh 中的所有输入和输出

按需记录 zsh 中的所有输入和输出

有什么方法可以激活/停用日志记录所有输入和输出在 zsh 会话上?

我正在使用 oh-my-zsh 和带有颜色等的自定义提示,我想尽可能保留所有这些(以便我稍后可以在 Emacs 或更少中打开日志文件,并让它们重新解析Ansi 颜色转义码

zsh 是否提供任何功能来促进这种类型的日志记录?

稍后,可视化日志文件的最佳方式是什么Emacs(或其他编辑器)并让它正确解析所有 Ansi 颜色转义码

答案1

最简单的方法是使用script.

script是一个实用程序,可以创建 TTY,然后在该 TTY 中启动程序。该 TTY 的所有输出也可以记录到文件中。它将记录原始数据,包括 ANSI 转义。
当没有给出要执行的特定命令时,它将生成一个新的 shell。您可以正常使用此 shell,然后在完成后退出该 shell。

例如

script /tmp/mylog

完成后,只需使用 CTRL+D 或exit离开 shell。

答案2

使用屏幕。引用手册页:

   C-a H       (log)         Begins/ends logging of the current window  to
                             the file "screenlog.n".

相关内容