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

时间:2010-08-20 22:03:30

标签: matlab unix

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

3 个答案:

答案 0 :(得分:10)

在bash中,此功能由命令history-search-forward和history-search-backward提供,默认情况下不绑定任何键(请参阅here)。如果你运行

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

它将向上和向下搜索当前行的开头和点之间的字符串的历史记录。另请参阅this related Stack Overflow question

答案 1 :(得分:8)

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

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

在上面的片段中,我在# many commands later...之后的下一行打了 ctrl - r ,然后输入 e < kbd> c 让我回到了echo命令。此时按 Enter 将执行命令。

答案 2 :(得分:3)

您可以使用“!”执行相同的操作。例如:

 $ echo "Hello"
 Hello
 $ !echo
 echo "Hello"
 Hello

然而,做这种事情通常是一个坏主意(如果最后一个命令做了破坏性的事情怎么办?)。如果您希望重用某些东西,那么我建议您创建一个shell脚本并将其保存在某处(每当我计划重用某些东西时,我在〜/ .local / bin中创建一个脚本)。