我用屏幕在管理我工作的服务器时执行命令行任务。我通常运行小型命令(主要是文件系统任务),但有时我运行更广泛的任务(例如 DBA)。
这输出这些任务对我来说很重要。由于我使用 Ubuntu 和 OS X(都是终端 Windows)来执行任务,但我需要使用屏幕,因此滚动不可用,因此任何长输出(想想来自选择的 500 行表)对我来说都是不可见的。鼠标滚轮是不可能的。
当我说“滚动对我来说是不可见的”时,我的意思是:
我考虑了两个选择:
暂停(思考分页)某个命令的输出。当输出开始时,它会让我读取正在发生的事情,然后我按“Enter”,然后输出继续,直到没有更多内容可显示。
在屏幕内滚动。但我不知道这是否可能。
当然,我不知道这些选项是否真的可能的。如果是的话,如何实现它们?其他替代方案将受到好评。
答案1
Screen 有自己的滚动缓冲区,因为它是终端多路复用器并且必须处理一些缓冲区。
也许有更好的方法,但我习惯使用“复制模式”滚动(您可以使用屏幕本身复制文本,尽管这也需要粘贴命令):
点击屏幕前缀组合(默认为
C-a
/ control+ ),然后点击或。AEscape[↑使用箭头键(和)上下移动↓。
完成后,按除箭头键、数字和某些字母之外的任意键即可返回到滚动缓冲区的末尾。大多数人使用q或Escape
(如果您不退出,而是按Enter或Space然后移动光标,您将开始选择要复制的文本,然后再次按Enter或将复制它。然后您可以粘贴,然后再粘贴。)SpaceC-a]
当然,您始终可以使用more
和less
,这两个常用的寻呼机,这对于某些命令来说可能就足够了。
答案2
答案3
所有这些答案都解决了如何在屏幕会话中导航,但是screen 命令中有一个内置功能,可以将所有内容存储在文件中-L
根据手册的说法:
-L 告诉 screen 打开 Windows 的自动输出日志记录。
所以你可以这样做:
screen -L -S testscreen
它将在当前目录中创建一个文件,文件名screenlog.#
是#
该屏幕的从 0 开始的数字。
这有很多优点,对我来说最重要的是:
- 记录我所做的事情,因为我可以将日志文件保存在项目文件夹中以供将来参考。
- 您可以非主动和被动地监控该过程:
- 用于
tail -F
实时监控进度,无需连接到屏幕。 - 用于
grep
检查日志中的特定术语并生成通知(电子邮件、弹出窗口、VoIP 等)。这可以应用于多个屏幕,而无需您主动查看它们。
- 用于
答案4
我已经成功通过将内容传输到 来获得基本分页more
,例如:
ls -l | more
或者,如果您想要语法突出显示等用例的颜色输出,您可以使用
ls -l --color=always | more
这导致我可以轻松地一次浏览一个屏幕的输出。我还没有尝试过 @uther 的修改,~/.screenrc
但当鼠标可用时,这似乎确实是更可取的持久解决方案。
要尝试一下,您可以访问这个 BusyBox 模拟器进而...
cd ~/bin
ls -l --color=always | more
使用空格键翻阅ls -l
命令的结果,或使用 Enter 键逐行浏览结果。