unix命令行中类似Matlab的命令历史检索

AgC*_*gCl 14 unix matlab

在Matlab中,我喜欢一个非常好的功能.假设我输入了命令very-long-command ,然后输入了几个命令.然后如果我再次需要长命令,我只需输入very并按向上箭头键,我的长命令就出现了.它找到以#开头的最后一个命令very.我在unix命令行中无法做同样的事情,当我尝试这样做时,它忽略了我输入的内容,并按时间顺序返回到最后的命令.有办法吗?

SCF*_*nch 11

在bash中,此功能由命令history-search-forward和history-search-backward提供,默认情况下不绑定到任何键(请参见此处).如果你跑

bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'
Run Code Online (Sandbox Code Playgroud)

它将向上和向下搜索向上和向下搜索当前行开头和点之间的字符串的历史记录.另请参阅此相关的Stack Overflow问题.


Mar*_*off 8

在bash中,点击ctrl- r 会让你进行历史搜索:

$ echo 'something very long'
something very long
$ # blah
$ # many commands later...
(reverse-i-search)`ec': echo 'something very long'
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我打ctrl- r上的下一行# many commands later...,然后键入ec这把我带回echo命令.此时点击Enter将执行命令.