问题描述
我搜查了,但没有发现任何东西。我正在使用终端在bash中寻找功能。
回头的时候,我有一个用户在一个debian系统上,并且一个朋友给我起了一个方便的历史搜索功能(我相信我使用了tcsh),在那里我输入以前的命令的开头,打到up-arrow,然后它会根据部分字符串进行搜索。
例如。如果我的历史是:
./script.pl
./script.pl arg1
cat output
cat output | grep yada
我键入.
,然后按up-arrow,它会显示我:./script.pl arg1
。再按一次,它会显示./script.pl
等。
非常喜欢它会在.bash_history上执行grep
。有没有办法获得这个功能?
最佳解决办法
在~/.inputrc
中放入以下行:
## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward
以#
开头的行是注释。我不记得什么是落后的,什么前进的。试用它。也许你必须前后切换。
有点背景资料:
Bash使用readline来处理提示。 ~/.inputrc
是readline的配置文件。请注意,这也会在使用readline库的其他软件中生效,例如IPython。
阅读bash manual以获取有关readline的更多信息。在那里您还可以找到更多history related readline commands。
要获得箭头键的转义码,您可以执行以下操作:
-
在终端启动
cat
(只需cat
,不需要其他参数)。 -
在键盘上键入键,你会得到像向上箭头的
^[[A
和向下箭头的^[[B
。 -
用
\e
替换^[
。
次佳解决办法
使用/etc/profile.d/中的模式644创建一个名为setup_readline.sh的文件,其中包含以下内容,登录并检查您的首选密钥:
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
我认为这是最好的方式。大多数情况下,如果你使用配置管理系统,如厨师,Puppet(木偶)等
而系统配置仍然未变!
第三种解决办法
Ctrl + R会给你这种功能。开始输入部分命令,它会提出旧的,你可以用向上和向下箭头导航。更多信息:http://www.nuxified.org/blog/ctrl_r_in_the_bash_shell
第四种办法
要完成我在Trusty 12.04下创建的关于”~/.inputrc”的lesmana的回答,请在”~/.bashrc”中验证/添加(第一行已经存在于我的”~/.bashrc”中):
shopt -s histappend
PROMPT_COMMAND='history -a'
在https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique中已用法语解释。