根据命令或存根/词干滚动浏览 shell 历史记录?

根据命令或存根/词干滚动浏览 shell 历史记录?

请原谅我的无知……我在 OS X 和 Linux 上的 Bash 中有过命令历史记录。有时,我想根据命令返回到某个项目。例如,假设我之前输入了:

make distclean && make dist && cp *.diff *.tar.gz ../

然后,假设我在历史上有数十或数百条命令跟随它。

我如何才能输入内容make然后使用向上箭头 ()或 Control 和向上箭头 (CTRL )返回历史记录中的该命令?

“存根”或“词干”意味着我只输入“ma”,而不输入“make”。

我在 Linux 和 OS X 上使用 Bash,所以我对这两个操作系统都很感兴趣。

答案1

另外Ctrl-R,您可以使用历史命令并将其通过管道传输grep到特定命令。

$ history | grep vi 
    7  vi /etc/shells
    8  sudo vi /etc/shells

从那里,您可以看到历史记录编号,并可以使用再次运行该命令!number

$ !8
sudo vi /etc/shells
Password:

我相信只要您不填满或清除命令历史记录,该数字应该保持不变。

答案2

这里有一些有用的技巧,可以帮助您根据前面的命令重复该命令(除了使用Ctrl+ R):

  • 用于!name重复以名称开头的最后一个命令,例如:

    !make
    
  • 要重复命令(例如使用sudo),使用:

    sudo !!
    
  • 要重复论点,请使用!$

    ls /usr/local/bin
    cd  !$
    
  • 要从最后一个参数编辑文件,请使用!^

     cp /etc/hosts hosts.bak
     vim !^
    

更多信息请访问:如何使用 Bash History 提高命令行效率

另请参阅:您最喜欢的命令行功能或技巧是什么?在Unix SE


附注:如果你经常输入错误,可以使用一个应用程序:

答案3

有一个readline(不是bash) 功能可以做到这一点。添加:

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

到您的.inputrc文件。
与此不同,Ctrl-r它仅匹配前缀。请参阅最重要的命令行提示 - 使用 .inputrc 进行增量历史记录搜索更多细节。

相关内容