我的目的是将终端输出的许多页面复制到一个文件中,以便进行日志记录。复制屏幕内容对我来说不太好用。它需要记住太多键,即使我记得它,它捕获整个内容的速度仍然比Shift+慢。F7
但是,Shift+F7使用我的环境打开一个名为“PRINTSCREEN*”的新窗口选项卡$EDITOR
,如果我选择保存它(使用 vim 或 emacs),它将保存为类似的内容/tmp/shm/byobu-username-RanDomNameDir/
。
我必须导航到我的$PWD
才能保存文件。路径大多数时候都很深很长。有没有办法可以更改,以便将 byobu 的临时缓冲区PRINTSCREEN
默认为$PWD
?
更新:
为什么不直接使用重定向?
许多人都建议这样做。答案是,我知道重定向。但这不是使用它的情况。在编写工作脚本并“正确”地将输出重定向到文件之前,我确实与终端进行了交互以探索各种方向。我的问题是关于调整 byobu 的Shift+F7命令的配置。它的唯一目的是服务于未发生屏幕重定向的用例。所以请不要谈论屏幕重定向。
答案1
使用 Linux 嵌入式script
实用程序。例如,要捕获从终端到capture.log
当前目录中文件的所有内容(使用 获取pwd
),请执行以下操作:
script capture.log
要停止捕获,只需输入exit
或按。有关及其选项的CTRL+D
更多信息:script
man script
评论。脚本实用程序输出文件包含原始控制字符,因此要读取它使用less
和-r
选项-R
,即
less -rR capture.log
要清除输出文件中的原始控制字符,请使用以下命令:
cat capture.log | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > capture-clean.log
最后一个命令从capture.log
文件中删除原始控制字符并创建纯文本文件capture-clean.log
。
答案2
经过一些测试,我决定最好从根源上进行修复:不是byobu
,而是tmux
。社区里一些好心的开发人员tmux
制作了一个补丁。现在一切都很完美:https://github.com/tmux/tmux/issues/1400