如何在多台机器之间共享 zsh 历史记录



我有一个非常满意的设置,用于在机器之间共享我的配置文件,但我发现我经常想在zsh(Ctrl + R)中搜索回来,我不记得我在哪台机器上键入了命令。理想情况下,我希望它从我的任何机器中搜索以前命令的规范去重列表。鉴于我有时会在没有网络连接的情况下同时在这些机器上工作,合并历史文件并保持所有内容同步的明智方法是什么?

我为oh-my-zsh写了这个插件:

一个用于GPG加密的Oh My Zsh插件,使用Git的互联网同步Zsh历史记录https://github.com/wulfgarpro/history-sync

嗯,我想你可以以某种方式识别你的帐户......然后,您可以执行以下操作:

  • 修改您的 .zshrc 以将 Dropbox 或 SCM 中的其他帐户的历史记录与当前历史记录连接起来(如果这是当前计算机上启动的第一个 zsh )
  • 然后用 -n 对条目进行排序(按时间戳排序)
  • 我想 zsh 会删除重复项,如果你有设置选择HIST_SAVE_NO_DUPS

然后,您需要捕获shell退出,并将现有历史记录复制到保管箱/SCM/任何共享位置。

您可以为包含.zsh_history的所涉及的计算机提供一个 NFS 挂载点。每台计算机都需要将 HISTFILE env var 设置为 NFS 中的该文件路径。

HISTFILE env var 是强制性的,因为 ZSH 不接受符号链接,它将被使用最新版本的符号链接目标的文件替换。

我还没有测试上面所说的内容,因为我的设置是在使用 OSX 和 Parallels 共享文件夹的 VM 之间进行的。因此,对于NFS,文件的完整性(顺序?)可能是需要考虑的事情,也是与Dropbox解决方案相比。

不确定,像 https://gist.github.com/elim/f77e3e9f06b6f8a5e788 这样的东西可以用来修复要合并的版本......

我使用以下命令:

ssh username@example.com cat ~/.zsh/.zhistory | cat ~/.zsh/.zhistory - | sort | uniq | tee ~/.zsh/.zhistory | ssh username@example.com cat > ~/.zsh/.zhistory

最新更新