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

时间:2012-05-08 23:45:31

标签: zsh zshrc

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

嗯,我猜你可以用某种方式识别你的账户......然后你可以做到以下几点:

  • 修改您的.zshrc以使用当前历史从dropbox或SCM连接OTHER帐户的历史记录如果这是在当前计算机上启动的第一个zsh
  • 然后使用-n(按时间戳排序)
  • 对条目进行排序
  • 如果你有setopt HIST_SAVE_NO_DUPS
  • ,我猜zsh会删除重复项

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

答案 2 :(得分:0)

您可以为涉及的机器安装一个NFS挂载点,其中包含.zsh_history。每台机器都需要将HISTFILE env var设置为NFS中的该文件路径。

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

我还没有测试过上面说的内容,因为我的设置是在VM使用OSX和Parallels共享文件夹之间进行的。因此,使用NFS可以考虑文件的完整性(顺序?),也可以考虑VS Dropbox解决方案。

不确定,https://gist.github.com/elim/f77e3e9f06b6f8a5e788之类的东西可用于修复要合并的版本......

答案 3 :(得分:-1)

我使用以下命令:

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