0%

Tmux屏幕内容输出至文件

保存Tmux的屏幕输出分为两步: 首先用capture-pane将屏幕输出保存在buffer里, 然后用save-buffer将buffer内容保存到文件里。

capture-pane中可以用-S-E指定要保存的屏幕输出的范围, 当前屏幕的最上一行为坐标原点,标记为0,下面一行坐标是1,依次类推; 原点的上一行坐标是-1,再上一行坐标是-2,依次类推。

Alt-c进入copy-mode后,屏幕右上角显示当前屏幕在整个pane中的坐标[X/Y], 其中X代表当前屏幕最高行的坐标,Y代表最早一行屏幕输出的坐标, 根据坐标确定要保存文本的起止坐标就可以保存了。

例如要保存第3个pane中的一段近5000行的输出, 进入copy-mode后按g键,到最早的屏幕输出,右上角显示[5676/5676], 用Ctrl-f或者J键向下滚动屏幕, 当想要保存的第一行处于屏幕最上一行时,坐标显示为[5557/5676], 将想要保存的最后一行滚动到屏幕最上一行,坐标显示为[642/5676], 切换到另一个pane里执行:

1
2
tmux capture-pane -S -5557 -E -642 -t 3
tmux save-buffer output.log

这样这段输出就保存到文件output.log里了,其中-t 3指定了要保存的pane的序号。

如果要保存所有历史输出,可以简写为tmux capture-pane -S -.

除了新开一个pane执行tmux命令,也可以在当前pane用快捷键Alt-a进入tmux命令行状态 即command-prompt,然后执行capture-pane -S -5557 -E -642.