劳伦斯·特拉特:更好的 Shell 历史搜索

作者每天在 Unix 终端中运行 shell 命令,不同人使用 shell 的效率差异很大。多数在 shell 中运行的命令高度重复,通过搜索 shell 历史可节省时间并减少错误。

  • 搜索 shell 历史:Bash 等大的 Unix 外壳可通过按Ctrl-r并输入子字符串来搜索 shell 历史,但子字符串匹配较粗糙,作者常使用grep搜索 shell 历史文件。而将Ctrl-rfzf结合,实现了模糊匹配和一次显示多个匹配项,大大提高了效率,作者从 zsh 到 fish 都配置了此功能。
  • 做得更好:发现Skim比 fzf 更适合自己,它能更快地找到想要的命令,UI 更优且在随机设备上更易安装。同时,从Atuin的视频中意识到希望模糊匹配器显示更多命令信息,如命令运行的时间等。
  • 适应 zsh 和 fzf/Skim:通过添加setopt EXTENDED_HISTORYsetopt inc_append_history_time使 zsh 记录命令执行时间,理解 fzf 和 skim 如何通过history-widget函数与Ctrl-r绑定,修改history-widget函数中的 awk 代码以显示更有用的命令信息,如将时间转换为相对 Unix 纪元的秒数、格式化命令运行时间等,最终得到更实用的 shell 历史搜索界面。
  • 总结:使用上述修改约 6 周,发现是有意义的生产力提升,还指出若经常在 Unix 终端中,可改进使用模式以提高效率,感谢Edd Barrett的评论,文末提供了相关链接和订阅方式。

脚注中说明了获取每天运行的独特 shell 命令数量的 Python 代码及相关解释,还提到了对 fish shell 的使用感受、Atuin 的安装和网络方面的问题以及在 awk 中处理某些问题时使用sed的原因等。

阅读 13
0 条评论