当你在查看历史记录时,如何导航到最早/最新的命令?

71

假设我正在一个bash终端中,并且有很多命令的历史记录。我按了很多次向上箭头键,现在处于历史记录的“中间”。我想快速导航到历史记录的第一个或最后一个命令(而不需要长时间按住向上或向下箭头键)。这是否可能?如果是,实现此操作的快捷键是什么?

快速跳转到历史记录中的第一个或最后一个命令:

  • 要跳转到第一个命令,请使用快捷键ctrl+a
  • 要跳转到最后一个命令,请使用快捷键ctrl+e
2个回答

93

看一下man页面

man bash

这里我为您复制了您正在寻找的东西:

previous-history (C-p)
    Fetch the previous command from the history list, moving back in the list.  
next-history (C-n)
    Fetch the next command from the history list, moving forward in the list.  
beginning-of-history (M-<)
    Move to the first line in the history.  
end-of-history (M->)
    Move to the end of the input history, i.e., the line currently being entered.

42
请注意,当 META 键无法使用时,您可以使用 Escape 然后 < 或 >。 - Benoit
3
如何在Vi模式下完成它? - Andrew_1510
19
对于那些仍然感到迷茫的人:C代表控制键,M代表元键。更多内容请参见此答案。对于某些系统来说,元键可能是Alt键或Alt键+Shift键组合。 - totymedli
6
在使用英文键盘的 Ubuntu 16.04 系统中,想要跳转到命令历史记录的开头/结尾,需要同时按下 Alt + < 或 Alt + Shift + <。 - totymedli
3
非常感谢你,@totymedli :D 我认为对于知道"M"代表什么的人来说,他们不会在寻找答案。 - Tomato
我正在使用匈牙利键盘。">" 是 AltGr+Y,所以要跳到历史记录的末尾,我需要按下 Alt 和 AltGr+Y。 - kol

23

根据终端的设置方式,你通常可以使用 Ctrl+C 快捷键回到开头(无注释),然后向上一两次,以便找到你要重新运行的最新命令。

或者,可以使用 history 命令列出所有最近使用的命令,并与它们关联的索引值。使用形如 !# 的命令将会重新运行该命令,其中 # 是索引号。此外,使用命令 history | grep [command] 可以在历史命令中查找特定命令。


4
ctrl-r 允许您在历史记录中进行反向搜索。 - Adam Dymitruk
我不知道 Ctrl + C 还可以回到历史记录的末尾。+1,因为我正在使用 byobu,所以 Alt + > 被映射到不同的功能。 - Darrel Holt

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