11

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

4

4 回答 4

3

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

用于 GPG 加密的 Oh My Zsh 插件,使用 Git https://github.com/wulfgarpro/history-sync与 Internet 同步 Zsh 历史

于 2016-06-09T02:01:03.130 回答
1

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

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

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

于 2012-05-10T07:33:44.283 回答
0

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

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

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

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

于 2016-12-08T19:17:25.510 回答
-1

我使用下面的命令:

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

于 2018-03-16T06:12:41.173 回答