当前位置: 首页>>技术教程>>正文


Bash历史搜索,部分+ up-arrow

, , , ,

问题描述

我搜查了,但没有发现任何东西。我正在使用终端在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

要获得箭头键的转义码,您可以执行以下操作:

  1. 在终端启动cat(只需cat,不需要其他参数)。

  2. 在键盘上键入键,你会得到像向上箭头的^[[A和向下箭头的^[[B

  3. \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中已用法语解释。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/465.html,未经允许,请勿转载。