当当前运行的程序在标准输出上输出数据时,是否可以设置终端不向下滚动到最后一行?
我有一个正在运行的程序,并且不断将数据输出到标准输出,从而更新终端,并且终端自动向下滚动到最后一行,不允许我读取之前输出的数据或我之前运行过的其他命令。
答案1
您可以通过按键盘上的 CTRL-S 暂时阻止滚动,这将暂停输出,直到您按 CTRL-Q。这样您就可以读取屏幕上当前的内容,但也可能阻止程序继续运行,具体取决于程序的工作方式。
我不知道 shell 本身是否有任何实际设置可以阻止屏幕滚动到最新输出,但你可以通过将输出传输到 less 来实现相同的效果。例如
my_command | less
答案2
取决于您使用的终端程序。您应该能够在其文档中找到此信息。大多数都是基于原始的xterm
,这是我使用的,所以我将根据它来回答。
要在现有的 中以交互方式执行此操作xterm
,您可以使用“控制鼠标中键”按钮上的菜单。菜单中有一项是“在 TTY 输出时滚动到底部”,默认情况下最初是选中的,您只需单击它,它就会删除复选标记,并且xterm
只要有输出, 就不会再跳到底部。
如果您希望某个特定的 xterm 以此方式启动,则有一个命令行选项-si
可以将其以未选中状态启动。如果您希望将其作为所有xterm
s 的默认设置,则可以设置资源scrollTtyOutput
(无论您在哪里设置 X 资源,都可以使用 Xresource 结构使其仅适用于某些xterm
s)。
我知道所有这些选项都存在,man xterm
现在就用它们来获取详细信息。UNIX 的一大优点(Linux 也遵循这一优点)是所有文档都在那里。你只需要看一下。