如何在Linux虚拟机的控制台上向上/向下滚动

239
我知道/会显示命令历史记录。但是如何通过滚动查看过去的输出呢?
我尝试使用 Shift+Page Up/Page Down, Alt+Shift+Up/DownPage Up/Page Down,但这些方式都不起作用。
这是一个Redhat Linux系统。

你正在使用xterm(或等效工具)吗? - teppic
1
不包括红帽企业版Linux - Jane Doh
我的意思是你是如何访问shell的。使用哪个终端仿真器? - teppic
1
我只是从虚拟机控制台访问Linux服务器。 - Jane Doh
1
这是VMware的问题吗?如果您没有使用常规终端模拟器,则不会有终端函数,例如滚动回退。 - teppic
我猜这取决于Jane Doh是在查看带有gnome终端的X会话还是作为文本呈现给“VM控制台屏幕”的实际控制台输出。虽然这是古老的历史,发生在2013年,但总体上这是一个有趣的问题。 - BenPen
15个回答

272
SHIFT+Page UpSHIFT+Page Down。如果不起作用,请尝试以下步骤:
打开终端程序,并确保选择了 编辑/配置文件首选项/滚动/回滚/无限制 选项。
但是,该选项的确切位置可能有所不同,因为我看到您正在使用Redhat操作系统。

那将是完全不同的问题。OP在谈论像gnome终端这样的东西。 - sdaffa23fdsf
1
太棒了,谢谢!你会如何在本机(“真实”)终端中设置滚动大小? - starbeamrainbowlabs
3
这个回答只有第一行对于Linux控制台有用,其余内容可能在像gnome-terminal这样的GUI终端上有用,但是并不是必需的。 - Gringo Suave
@GringoSuave 懂得这个。 - Daniel Baker
对于那些没有发现它起作用的人,请不要忘记关闭“NumLock”。 - Irfandy Jip

131

Shift+Fn+ 上箭头下箭头 可以让你在 Macbook 上滚动。


4
在Mac主机上的CentOS虚拟机上运行良好。 - Miro Markaravanes
1
谢谢。对我来说没问题(在Mac OSX10.10上的VirtualBox虚拟机中运行的Ubuntu服务器)。 - Chris Jacob
1
谢谢Lauren,也感谢@anizzomc。我在我的MacBook Pro上运行Ubuntu服务器虚拟机,一直在尝试解决这个问题,真的很费劲。 - CaseyB
1
正如评论所示,这是唯一正确的答案。其他人都在谈论终端仿真器,这不是OP所问的。这是我在Macbook Pro上的Parallels中模拟Ubuntu Server 14.04时唯一有效的方法。 - Roobie Nuby
2
这是因为你的PageUp/PageDown键被映射到Fn+上/下,所以在其他键盘上无法使用。而且Fn不是操作系统识别的真正按键(除了Mac)。 - phuclv
显示剩余3条评论

90

替代方案: 您可以使用 less 命令。

在控制台中输入:

"your_command" | less   

这将允许您使用上下箭头键进行滚动。

基本上,您的输出已经通过less命令进行了管道传输。


1
有趣的是,这是在FreeNAS安装盘上使用shell时唯一有效的方法。 - ZeroInputCtrl
3
FreeNAS基于FreeBSD,因此滚动方式不同。首先,您需要按下“ scroll lock”键进入分页模式,然后使用箭头和“ page up” / “ page down”来滚动。再次按下“ scroll lock”键以返回输入模式。 - arrowd
2
这是唯一适用于无头服务器的解决方案。其他解决方案适用于带 GUI 的服务器。 - learner

28

替代逐行滚动的方法

使用 Ctrl + Shift + Up ArrowDown Arrow 键,可以实现更加流畅的逐行滚动。与 Shift + Page UpPage Down 不同,它只会滚动一行,这正是我需要的。


2
我需要在没有“Page Up”和“Page Down”的Chromebook上进行滚动。效果很好。 - Sebastian Simon
相信这需要在Linux控制台上启用CONFIG_VGACON_SOFT_SCROLLBACK - Gringo Suave

24

SHIFT + Page UpSHIFT + Page Down 是在 Linux(虚拟)控制台上操作的正确按键,但是 VMware 控制台并没有这些终端设置。虚拟控制台有固定的滚动回溯大小,根据这篇 Linux 虚拟控制台滚动行为文档,看起来它受限于视频内存大小。


为了防止马太效应,从现在开始我会尝试点赞第二个和正确的答案,以鼓励那些已经有正确答案的人回答问题。 - WesternGun
这是否意味着VMWare拦截了这些按键? - Gringo Suave

19

另一个选择是使用 GNU screen,它可能已经安装在您的系统上:

# This starts screen which adds basic window management in terminals
screen

# This starts the copy mode you can use to scroll
<CTRL-A> [

# Now use the arrows to scroll

# To exit copy mode, do
<ESC>

查看 man screen 获取更多有用选项(多窗口等)...


13

对我来说,Shift Pageup/End 可以使用。


1
这应该是注释。 - wscourge
11
我还不能发表评论 :( - Rjj

10

似乎这并不容易实现:在控制台上没有简单的方法来实现这一点,Arch Linux Wiki没有列出任何方法(虚拟终端上很容易实现)。

您可以使用tmux 滚动

Ctrl-b,然后[,然后您可以使用您通常的导航键来滚动(例如 Up ArrowPgDn)。按下q退出滚动模式。

或者,您可以按 Ctrl-b PgUp 直接进入复制模式,并向上滚动一页(这听起来是您大多数时候想要的)。


8

在Mac上运行Ubuntu虚拟机...使用fn + shift + 上/下箭头


1
这是与Lauren的答案完全相同,但提到了操作系统的内容。 - phuclv

5

我在使用VMWare Workstation运行Ubuntu虚拟机时遇到了同样的问题,最终发现VMWare不支持从服务器视图向上滚动。我的解决方法是安装x GUI,然后从那里运行xterm。由于某种原因,它的运行方式相同,但可以让您以正常方式滚动。希望这对未来使用VmWare虚拟盒的读者有所帮助。


1
重量级的解决方案。另一个可能是安装sshd并远程登录。 - Gringo Suave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接