从linux中的某些字符开始重新加载历史命令的最快方法是什么?


2

在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

我不喜欢它,因为历史很容易变得混乱,它也需要鼠标动作。

Answers:


6

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

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

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

(你将不得不重新启动bash。)(不确定这是否适用于csh。)


以上适用于使用readline(python,gnuplot,gdb,...)的任何内容。请参阅pixelbeat.org/settings/.inputrc
pixelbeat

@pixelbeat:也许你应该把“ $include /etc/inputrc”放在最顶层?否则,系统设置可能会覆盖您的自定义设置。
maxelost 2011年

6

在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

2
别忘了通过反复按下CTRL-R你的搜索列表来提及。
菲利克斯

看来这个命令只能向后搜索,对吗?
格里

@gerry,是的Ctrl-R只能向后搜索
thkala 2011年

2
@gerry:Ctrl-S向前搜索,但您可能需要执行stty -ixon此操作(以及禁用Ctrl-SCtrl-Q停止并启动数据流)。
丹尼斯威廉姆森

@Dennis谢谢。你的补充是有帮助的。现在这个答案可能是网上最完整的Ctrl-R用法:)
格里

3

除了Ctrl+之外R,你可以在bash中键入!sudo+ Enter,它将执行最后一个命令sudo


1
相当有用......直到那个时候最后一个命令就是这样的sudo rm -rf *。我知道有很多人像这样被烧毁了。
thkala 2011年

2
@thkala:也许sudo应该使用的命令之一;)
Felix

我觉得这shopt -s histverify histreedit对我很有帮助。
丹尼斯威廉姆森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.