在bash
命令行上,↑给我上一个命令。在ipython
或 的命令行上matlab
,当我输入几个字符时,↑给我以前输入的以这些字符开头的命令。我怎样才能在 中启用这种行为bash
?
我知道搜索命令行历史记录的更高级方法,但有时简单的方法更方便。
答案1
您正在寻找的 readline 命令是以下history-search-*
命令:
历史搜索向前
在历史记录中向前搜索当前行开头和当前光标位置(点)之间的字符串。这是非增量搜索。
历史搜索向后
在历史记录中向后搜索当前行开头和该点之间的字符串。这是非增量搜索。
将它们绑定在您的 中.inputrc
,如下所示:
"\e[A": history-search-backward # arrow up
"\e[B": history-search-forward # arrow down
将允许您输入命令的第一个字符,然后使用Up和Down键仅在命令中移动以.bash_history
该字符串开头的那些命令。
例如,输入vi
和Up会将您带到上一个以 开头的命令vi
,例如vim somefile
。输入Up将带您到下一个上一个实例,依此类推。
您可以在此处阅读有关所有 readline 绑定的更多信息: http://linux.about.com/library/cmd/blcmdl3_readline.htm
答案2
将以下内容添加到 ~/ 中的 .inputrc 中,以执行您的建议:
"\e[B": history-search-forward
"\e[A": history-search-backward
也许您可能还想将以下内容添加到您的 .bash_profile 中:
export INPUTRC=~/.inputrc
答案3
前面加一个“!”到您正在寻找的命令。如果您希望替换向上和向下箭头的功能,则可以修改 inputrc 文件(如其他答案所建议的那样)。
如果“command”是您要搜索的命令,请输入:
!comm
您应该得到“命令”作为输出。
同样,如果您想要查找包含该命令的一部分(但可能不以其开头)的命令,请按 ctrl+r,然后键入该命令的一部分。
您还可以输入“tab”来自动完成输入的文本(这也包括文件)。如果您要查找的命令不在您的历史记录中(或者您没有历史记录文件),这非常有用
您可以在此处阅读有关“掌握”历史文件的更多信息: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/