小智 498
键入Ctrl R的命令行并开始输入一条命令。一旦出现结果Ctrl R,请继续点击以查看其他比赛。当您想要的命令出现时,只需按Enter
请注意, whileCtrl R是默认设置,如果您希望将命令 ( reverse-search-history) 绑定到Ctrl T您可以使用以下内容进行配置:
绑定 '"\Ct": 反向搜索历史'
您还可以使用大量其他 readline 可绑定命令。看看bash手册页。
Bash 有许多工具来搜索和访问交互式命令历史记录。其中最基本的是history内置的。只打字:
$历史
将打印命令列表以及数字索引,例如:
$历史 1 清除 2 ls -al 3 vim ~/somefile.txt 4 历史 $
然后,您可以使用它们的数字索引执行这些命令中的任何一个!,方法是在索引前面加上一个,正如Mitch指出的那样:
$ !1
将执行clear命令。内置的历史记录本身有很多特性,你可以在bash和history手册页中看到更多。
您还可以在使用!指示符时指定相对负偏移量,因此使用上面的历史列表,如果我们想vim再次执行,我们可以这样做:
$ !-2
这基本上是告诉 bash 执行您“两个命令前”运行的命令。要运行历史列表中的上一个命令,我们可以使用!!(这只是 的简写!-1)。
该!标志不限制你数值指定要运行的命令。hayalci表明您可以bash根据命令开头的文本(使用!)或命令本身内的文本(使用)指示执行命令!?。同样,使用上面的示例历史列表,如果我们想clear再次执行,我们需要做的就是输入:
$ !cl
并按Enter。那么vim呢?这很简单:
$ !?一些
hayalci回应中最重要的一点是对shopt内置函数的调用:
$ shopt -s histverify
这将使历史验证,以便通过匹配该命令!,!!以及!?代号并不是盲目地执行,而是填充在命令行上,这样可以保证他们在执行之前不做坏事。当您以 root 用户身份执行命令时,这一点更为重要。此选项可以在您的.bashrc启动文件中设置,以便在您登录时设置。
正如已经指出的那样,所有这些信息都可以从bash手册页中收集。对于 !, !!, 和 !? 指示符,请查看第9.3节历史扩展。
Mit*_*tch 50
你也可以这样做:
history | grep "stuff"
Run Code Online (Sandbox Code Playgroud)
它会返回类似的东西
num stuff
Run Code Online (Sandbox Code Playgroud)
然后你可以输入
!num
Run Code Online (Sandbox Code Playgroud)
hay*_*lci 39
作为替代crtl+R,您可以通过键入来搜索历史记录
!text
Run Code Online (Sandbox Code Playgroud)
这将在历史记录中搜索以“text”开头的最新命令。
但我建议你把它放在你的 .bashrc 中以防止执行错误的命令。
shopt -s histverify
Run Code Online (Sandbox Code Playgroud)
这会指示 bash 在任何历史操作(如!!:s/prev_text/after_text)之后,将结果行放置到命令提示符中。然后您可以查看或编辑命令,然后按 Enter。
小智 18
我更喜欢使用 history-search-backward 而不是 reverse-search-history。前者让您键入命令的几个字符然后按搜索键,而不是先按搜索键然后键入搜索字符串。
默认情况下,在我的系统上, Mp 和 Mn 绑定到类似的功能,但我更喜欢绑定箭头键:
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'
Run Code Online (Sandbox Code Playgroud)
小智 13
写得很好,肖恩!我会把它放在评论中,但我有点害羞。:-)
另一个相关且有用的技术是在更改单词的同时运行先前命令的能力。假设您输入了目录名,或者想更改文件名:
$ echo 我的名字是鲍勃 我的名字是鲍勃 $ ^鲍勃^乔丹 回声我的名字是乔丹 我叫乔丹
请注意,命令在运行之前被展开、替换和输出,因此如果运行了错误的命令,您可以看到 bash 认为它在做什么。
小智 13
我有一个非常棒的别名,h。这真的只是“历史| grep”,但我用“grep -E -v”过滤掉了以前的“h命令”条目
alias h="history | grep -E -v '^ *[0-9]+ *h ' | grep "
Run Code Online (Sandbox Code Playgroud)
用过
h aliases
2003 less .bash_aliases
Run Code Online (Sandbox Code Playgroud)
由于使用 Ctrl-r 浏览历史记录在 IMO 中很麻烦,您可能需要考虑hh:
https://github.com/dvorka/hstr
这使得导航变得更加简单、直接和高效——包括运行以下命令:

| 归档时间: |
|
| 查看次数: |
217827 次 |
| 最近记录: |