Answers:
键入Ctrl R的命令行并开始输入一条命令。一旦出现结果Ctrl R,请继续点击以查看其他匹配项。出现所需命令时,只需按Enter
请注意,虽然while Ctrl 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节“ 历史扩展”。
shopt
放在bashrc中,而不是bash_profile中(否则,不是登录shell的shell不会启用它)。
作为的替代方法crtl+R,您可以输入以下内容来搜索历史记录:
!text
这将在历史记录中搜索以“ text” 开头的最新命令。
但是我建议您将其放在.bashrc中,以防止执行错误的命令。
shopt -s histverify
这会指示bash,以便在执行任何历史记录操作(如!!:s/prev_text/after_text
)之后,将结果行放置到命令提示符下。然后,您可以查看或编辑命令,然后按Enter。
我有一个很好的别名,h。它实际上只是“历史记录| grep”,但我使用“ grep -E -v”过滤掉了先前的“ h命令”条目
alias h="history | grep -E -v '^ *[0-9]+ *h ' | grep "
使用像
h aliases
2003 less .bash_aliases
HISTIGNORE
。
ctrl + r
现在默认绑定到
我喜欢HSTR,但有时似乎无法安装。因此,我使用fzf编写了一个别名来模仿其行为(hx
,用于“历史执行”)
alias hx='eval $(history | sed "s/^ *[0-9]* *//g" | fzf --tac --tiebreak=index --height=10)'
history
:好吧,获取历史sed
:从列表中删除数字列(POSIX)fzf
:这是神奇的法宝,允许您交互式地模糊搜索列表,或使用C-J
和移动C-K
,然后使用来执行命令Enter
。--height
:设置显示的行数。--tac
:还原列表(对于历史记录更合乎逻辑)--tiebreak=index
:保留fzf更新结果时的历史记录顺序