有没有比 grep 更好的方法来搜索我的历史文件中的命令?我确实知道该命令的开头是什么,但我不知道它的历史有多远。
更新:以前是 zsh 特定的,但由于答案重叠,请随意回答任何 shell(或模式(vi/emacs)),只需注意它是否特定。
答案1
答案2
使用 Bash 时,输入Control-R然后开始输入。输入一些文本后重复键入Control-R将使您返回到匹配的命令行。
答案3
如果将以下内容添加到~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
并重新启动 Bash,您可以开始输入,然后使用Page Up和Page Down在以您刚刚输入的相同前缀开头的行历史记录中前后移动。
(有些人可能更喜欢使用\e[A
和\e[B
,它将取代普通的Up和Down操作,而不是绑定新键。)
答案4
已经提到的Ctrl-调用的交互式提示是最方便的方法。R此外,重新映射Up和Down箭头键来搜索当前在命令行上的前缀的历史记录是很流行的,但这需要一些更改为~/.inputrc
对文件。
经典且交互性较低的解决方案是使用 shell 历史扩展。打字
!foo
将执行最后一个以foo
and开头的命令
!?foo
将执行包含的最后一个命令foo
。有关历史扩展的更多信息可以在Bash 参考手册,假设您的 shell 是 Bash 或兼容的。