在 Linux 中重新加载以某些字符开头的历史命令的最快方法是什么?

在 Linux 中重新加载以某些字符开头的历史命令的最快方法是什么?

在Dos中,我们可以输入命令的前几个字符来过滤历史命令,快速找到正确的命令。但是在Linux中如何做同样的事情呢?

例如当我测试本地服务器时:

cd 
sudo /etc/init.d/vsftpd start
wget ...
ls
emacs ...
sudo /etc/init.d/vsftpd restart
sudo /etc/init.d/vsftpd stop
...

在 Dos 中,你可以sudo使用箭头键轻松地键入并以它开头的三个命令并在它们之间切换。但在 Linux 中,下面的命令是我们能做的最好的吗?

historty | grep sudo

我不喜欢它,因为历史很容易变得混乱,并且还需要鼠标操作。

答案1

将以下内容放入您的~/.inputrc

"\e[A": history-search-backward
"\e[B": history-search-forward

然后输入后sudoUp将搜索以 开头的命令sudo

(您必须重新启动 bash。)(不确定这是否在 csh 中有效。)

答案2

在 Bash(以及大多数类似的基于 readline 的应用程序中)中,您可以按 调Ctrl-R出历史记录搜索功能:

$ date
Tue Feb  1 15:40:06 EET 2011
(reverse-i-search)`d': date

点击Enter此处我得到:

$ date
Tue Feb  1 15:40:06 EET 2011
$ date
Tue Feb  1 15:40:52 EET 2011

编辑:

您可以查看与历史记录相关的 Bash 按键的完整列表这里

您可以查看当前历史搜索键盘绑定列表:

$ bind -P | grep search | grep history
forward-search-history can be found on "\C-s".
history-search-backward can be found on "\e[5~".
history-search-forward can be found on "\e[6~".
non-incremental-forward-search-history can be found on "\en".
non-incremental-forward-search-history-again is not bound to any keys
non-incremental-reverse-search-history can be found on "\ep".
non-incremental-reverse-search-history-again is not bound to any keys
reverse-search-history can be found on "\C-r".

在我的例子中,Page-Up/Down 也可用于搜索以我已经输入的内容开头的命令,如我的配置所示/etc/inputrc

# Page Up/Down cycles through history only for matching entries
"\e[5~": history-search-backward       # Previous
"\e[6~": history-search-forward        # Next

答案3

除了Ctrl+之外R,您还可以在 bash 中输入!sudo+ Enter,它将执行最后的以 开头的命令sudo

答案4

输入首字母,如sudo,按Ctrl,然后按

相关内容