您可以结合Bash的现有历史记录和历史记录搜索功能。按Ctrl-R开始渐进式反向搜索,然后开始输入路径中最有可能唯一的部分。
您可以继续输入字母,直到最后回到cd
涉及该目录的最新命令为止,或者可以Ctrl-R再次按以跳回历史记录中,找到与您到目前为止输入的命令相匹配的下一个最新命令。
我一直都这样做。
实际上,我更进一步。一旦我发现了值得保留但不值得提交给shell脚本的命令序列,便开始使用&&
和;
组合器将它们链接起来,这样我就可以反向搜索该长命令的子字符串,Enter并在以下位置运行整个序列一旦。
例如,这是在开发过程中如何构建和运行我的程序之一:
$ ( cd .. ; make install ) && ./start_my_program
我从顶级源目录下面的安装目录执行此操作。通过将cd
,构建和安装部件包装在子外壳中,我可以确保无论在此过程中发生什么情况,我都能回到我的常规外壳中,而无需进行任何更改。只有成功(&&),我才启动内置和安装的程序。我可以在历史记录中找到Ctrl-Rthen sta,这就是我唯一需要唯一找到此命令序列所需的全部。
我如何使用它的另一个示例是为同一程序构建RPM的顺序。大部分繁琐的工作都在shell脚本中进行,但是我仍然通常需要键入一些命令来完成构建和部署已构建的RPM的所有工作,现在我几乎不需要重新键入了,因为Bash一直保持对我来说,这是历史。
将所有这些与export HISTSIZE=bignum
和结合在一起,shopt histappend
您就已经建立了一个大象命令存储器。
我曾经编写的另一个解决方案是在这里我对另一个问题的回答。它可能必须针对您的目的进行量身定制,并且仅处理cd
命令,而历史记录搜索选项适用于所有位置和每个命令。