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