如何将终端向后滚动到最后一个命令的位置?

时间:2013-06-20 11:38:22

标签: bash command-line scroll terminal

我有一个很多输出的程序。一旦完成,我经常想回滚到运行的开始,以便我可以看到那里的一些东西。由于输出很长,我看到自己无休止地使用PageUp滚动并尝试将右侧的滚动条拖动到可能已经开始的位置。过了一段时间,这开始变得非常烦人,所以我想知道:

有没有办法让终端滚动回到最后一个命令的部分?

9 个答案:

答案 0 :(得分:8)

我刚在OSX的终端找到了这个:

编辑>导航>跳转到上一个标记:cmd + UP。

答案 1 :(得分:3)

在LINUX中实现它

在提示符下添加一个标识符(例如,在.bashrc底部添加):

promptCount=0
PROMPT_COMMAND=promptCount=$((promptCount+1))
PS1="/\$promptCount\\ $PS1"

现在使用终端的搜索功能,也许 Ctrl + Shift + F ,显示提示行 你想要的。

更方便:

安装xdotool(命令行X11自动化工具)

创建一个函数,将按您要按的确切键 通过搜索功能找到N提示行时 (添加到.bashrc的底部):

gp () { xdotool key ctrl+shift+F; xdotool type /$1\\ ; xdotool key KP_Enter;sleep 0,2; xdotool key Alt+F4; }

(至少这些是我要做的确切按键 Manjaro Xfce)

现在:

enter image description here

有一个小框未显示在gif中,该小框出现在小搜索窗口中,写入了N的标识符,按下了 Enter 键,然后关闭了窗口。您可以尝试更快地更改为sleep命令提供的参数值。就我而言,它可以很好地工作到0.11左右。

答案 2 :(得分:1)

如果你正在使用像GNOME终端这样的终端,你可以向后搜索。例如, Ctrl + Shift + f 然后输入文字命令或正则表达式以匹配它(并确保“匹配为常规”表达“相应地设定。”

解决方法是将输出发送到寻呼机,例如less,您可以在其中导航并检查输出,然后返回命令行,就像没有打印任何内容一样。

答案 3 :(得分:1)

我在macOS中使用iTerm2,我想出了一种方法。首先,您应确保选中iTerm2的首选项中的Unlimited scrollbackenter image description here

在终端中运行命令并获得很长的输出后。

Cmd + F(可能在Windows中为ctrl + F),然后可以在终端中进行如下搜索:

enter image description here

最后,只需搜索您的用户名并按Enter,通常来说您将跳到最后一个命令:

enter image description here

答案 4 :(得分:1)

我将输出通过管道传递到less,例如command | less,因为它具有大量用于快速导航的有用键,而且还支持搜索。您还将自动从输出的最开始处开始。

以下是一些用于快速导航的有用命令:

  • fSPACE向前移动页面,b向后移动页面。页面是指值得输出的终端窗口大小。
  • g从头开始,G到结束,[n]g跳到第n行。例如5g将跳到第5行。
  • /pattern搜索术语,然后使用n导航下一个,并使用N导航前一个。支持RegExp。
  • q退出。

有关更多信息,请执行man less。手册页默认还使用less,因此上述所有方法都适用。

答案 5 :(得分:0)

简单地将输出重定向到文件是不是更容易,从而保持终端窗口“干净”?

类似于:command >> output_file

答案 6 :(得分:0)

如果您使用screen,我认为有办法。

  1. 使用screen命令
  2. 启动会话
  3. 执行您的命令(在屏幕上输出一些数据)
  4. 键入Ctrl+a,然后输入[。屏幕进入复印模式。
  5. 您可以向后搜索命令提示符吗? (就像vi一样)
  6. 同样screen有很多优点。查看http://kb.iu.edu/data/acuy.html

答案 7 :(得分:0)

一个简单的Hack,如果要花一些时间直到大部分输出被打印出来(例如调用make时),它就会起作用:

在执行命令后立即向上滚动一点(例如,一行)。 由于您不再位于底部,因此可以防止大多数终端自动向下滚动。 一旦您认为已打印输出(滚动条的位置和感觉是很好的指示),就可以向下滚动。 只是避免在打印时滚动到最后一行。

答案 8 :(得分:0)

我们可以在运行命令之前使用 Ctrl - L 清除终端。

然后在运行命令后,使用 Ctrl - Home 完全返回。