使用反向 i 搜索仅循环匹配模式的命令

使用反向 i 搜索仅循环匹配模式的命令

使用的命令历史文件的内容history | less是:

555 ls
556 ls -a
557 echo "hello"
558 echo "hello again"
559 cd
560 pwd
561 echo "hello hello"
562 ls
563 echo "hello hello hello"
564 cd
565 pwd

我想使用反向搜索(reverse-i-search)`echo':来仅循环浏览命令历史文件中与在命令行提示符上输入的模式(即本例中为“echo”)匹配的命令,最好直到命令历史文件中的指定行号,以便我仅选择echo我想要再次运行的以前使用过的命令,而不是echo命令历史文件中的所有命令

使用反向 i 搜索可查找该命令的最新用法echo(因此名称为反向 i 搜索,即反向搜索命令)。但是,当以相反顺序向前滚动(即反向搜索)时,bash 会从反向搜索返回的行开始滚动浏览命令历史文件的每一行,从而包括我不想搜索的命令。

  1. (reverse-i-search)`echo':一旦您开始滚动历史列表,反向搜索提示就会消失。如何防止反向搜索提示在滚动过程中消失,以便当您反向滚动时仅显示与模式匹配的命令?
  2. 如果 1 是可能的,那么如何暂时将反向搜索限制到命令历史记录文件中的特定行号,以便仅从命令历史记录文件的一部分中选择命令?

注意:当您有多个相同命令行参数的实例并且反向搜索找不到您要查找的参数时,此问题的解决方案也很有用

答案1

输入搜索词后,请使用:

  • Ctrlr在“up”中搜索上一个命令,并且
  • Ctrls切换方向并“向下”搜索下一个。

我不知道如何限制要扫描的历史条目的数量。

答案2

如果必须使用 less 命令进行历史搜索,那么使用 tac 命令可以更轻松地完成反向搜索:

$ history | tac | less

这样你就不需要在 less 中使用reverse-i选项。

相关内容