grep
将列出我的最后一个grep
命令,我可以按Enter键使用它。虽然这只是一个建议。有什么方法可以循环浏览其他先前键入的匹配命令吗?#1 楼
如果我正确理解了这个问题,则应该可以通过反复按Ctrl + R来遍历替代方案。
例如:
Ctrl + R
grep
Ctrl + R
Ctrl + R
...
向后搜索历史记录。要进行向前搜索,请使用Ctrl + S,但您可能需要先进行以下设置:
stty -ixon
(通过.bash_profile
或手动进行设置),以禁用接管Ctrl + s的XON / XOFF功能。 (更多详细信息在这里。)#2 楼
如果您觉得该命令会经常使用,则可以添加一个标签命令#useful
然后
ctrl+r #useful
这是有效的,因为
#
是注释定界符,即,符号后面的所有内容均不解释为命令。但是,它将被记录在历史记录中,因此可以进行搜索。评论
通常我喜欢这种标记。 #trg_bld #open_log
–Makesh
15年7月31日在5:50
在哪里添加此标签?
– Sudip Bhandari
16年3月3日在13:46
@SudipBhandari在您的命令之后。 #开始评论。例如。 ls -lah#有用
– Andrei
16 Dec 4'在9:27
Unix在很酷之前就带有标签了:)))
– Boris Marinov
19-10-11在11:44
这更多的是hack,一段时间后.bash_history被刷新。使用bash别名会更舒服
– Nino Filiu
12月11日13:56
#3 楼
您还可以通过将以下行添加到〜/ .inputrc来设置向上和向下箭头以进行稍有不同的搜索:"\e[A": history-search-backward
"\e[B": history-search-forward
而不是在任何地方搜索子字符串在命令(如Ctrl-r)中,它将搜索从光标左侧的文本开始的命令。例如,如果我运行以下命令:
$ ls bart
$ ls fools
,然后键入
ls
并按两次Up,它将显示ls bart
和光标在同一位置。与Ctrl-r相比,它会在最后一行找到ls
两次,因此您必须再次按它才能找到前一行。他们两个都可以节省很多时间。评论
这在OS X上也是标准的,因此您无需创建〜/ .inputrc并添加这两行。
– DASKAjA
16年8月12日在14:36
正如falconepi在此答案的注释中所写,在Ubuntu上,您只需要在〜/ .inputrc中取消注释两行,包括history-search- *。
– Arpad Horvath
16年8月16日在7:11
您也可以查看此帖子以获取有关此答案的更多详细信息:codeinthehole.com/writing/…
– Andrei
16 Dec 4'在9:48
这在我的macOS(10.13)上不是标准的。我一直都错过了此功能!
– forthrin
18 Mar 30 '18 at 11:02
这样做的好处是您仍然可以使用ctrl-p / ctrl-n定期浏览历史记录
–elig
18-09-19在2:46
#4 楼
有一个内置的Ctrl + R替代品,称为hstr。它允许同时(除其他外)搜索与所有搜索标记匹配的命令历史记录,并使用箭头键在结果之间循环:这是一个演示屏幕录像。
它可以安装在Debian系列操作系统上,例如: 。
评论
我认为这必须是公认的答案。谢谢!
– Nam G VU
10月27日0:13
评论
+1-仅供参考-您也可以根据此StackOverflow答案进行向前搜索。
–乔丹·阿塞诺(Jordan Arseno)
13-4-24在21:14
如果碰巧经过,请使用Ctrl + Shift + r进行反向滚动。
–智慧
2015年11月1日下午13:41
@wiswit CTRL + SHIFT + r对我不起作用。
– Maxim Suslov
16年4月5日在7:48
@MaximSuslov看到这个问题:stackoverflow.com/questions/791765/…您可以将[[$-== * i *]] && stty -ixon添加到您的.bashrc中,然后CTRL + s可以作为CTRL +的反向[R
–gla3dr
16-4-21在17:03
@JordanArseno我将“向前搜索”的意思是“搜索尚未输入的命令”
–乔什·约翰逊(Josh Johnson)
16年7月28日在22:10