Answers:
CtrlR正如描述符所描述的,+ 通常是最好的方法。您也可以使用!string
,以运行以开头的最新命令string
,或者!?string?
使用包含的最新命令string
。
(我认为这是与此问题相关的唯一内容,但是我在此答案中涵盖了更多的历史记录命令)
<kbd>Ctrl+R</kbd>
。答案来源
不知道这是否有帮助,但是我喜欢使用ctrl- r然后开始键入命令。它应该遍历您的历史并为您呈现第一场比赛。要在比赛中切换,只需再次点击ctrl- r。
如果将以下内容添加到 ~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
并重新启动Bash,您可以开始键入,然后使用Page Up和Page Down来向前和向后浏览以您刚键入的相同前缀开头的行的历史记录。
(有些人可能更喜欢使用\e[A
和\e[B
,它将代替常规Up和Down操作,而不是绑定新键。)
Alt + Up
和Alt + Down
。根据键盘仿真,终端仿真使用这些组合可能会映射到\E[A
和\E[A
(例如,带有Linux键绑定的KDE Konsole)或\E[1;3A
和和\E[1;3B
(例如,带有X Free 4绑定的XFCE Terminal或KDE Konsole)。
已经提到的Ctrl- 调用的交互式提示R是最方便的方法。另外,重新映射Up和Down箭头键以在历史记录中搜索命令行上当前存在的前缀非常流行,但是这需要对~/.inputrc
文件进行一些更改。
经典且较少交互的解决方案是使用shell历史记录扩展。打字
!foo
将执行以foo
和开头的最后一个命令
!?foo
将执行包含的最后一个命令foo
。假设您的shell是Bash或兼容的,则可以在Bash参考手册中找到有关历史记录扩展的更多信息。
如果添加stty -ixon
到~/.bashrc
文件中,则Ctrl- s将与Ctrl- 相反r。
C-q
将“解冻”。它C-s
是常用的软件流控制字符,曾经在使用慢速串行连接时手动中断(暂停)输出流很有用。现在,在大多数情况下,输出是如此之快,以至于您按时想要看到的内容C-s
已经滚动了。stty -ixon
关闭软件流控制。
我大部分时间都使用以下两种方式。
但是请注意,他们两个都搜索起始字符。
fc -e - <SPACE>
<first few char for your previous >
此命令将运行与该序列匹配的最后一个命令。我无法在Bash中为我的ksh和tcsh 找到类似Ctrl+的东西R。
set -o emacs
顺便说一下,这是在模式下。
是的,它存在,至少在使用zsh的情况下。只需开始键入命令,然后按M-p(ESC p),它将找到与您键入的命令匹配的先前命令。再按一次即可找到下一个匹配项。