![在 Linux 中重新加载以某些字符开头的历史命令的最快方法是什么?](https://linux22.com/image/1264013/%E5%9C%A8%20Linux%20%E4%B8%AD%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD%E4%BB%A5%E6%9F%90%E4%BA%9B%E5%AD%97%E7%AC%A6%E5%BC%80%E5%A4%B4%E7%9A%84%E5%8E%86%E5%8F%B2%E5%91%BD%E4%BB%A4%E7%9A%84%E6%9C%80%E5%BF%AB%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
在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
然后输入后sudo
,Up将搜索以 开头的命令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,然后按↑或↓。