2012-05-08 76 views
1

我有一個安裝程序,我很高興在機器間共享我的配置文件,但我發現我經常想在zsh(Ctrl + R)中搜索回來,但我不記得在哪臺機器上輸入了命令。理想情況下,我希望能夠從我的任何一臺機器上搜索以前命令的規範清單。鑑於我有時在沒有網絡連接的情況下同時在這些機器上工作,合併歷史文件並使所有內容保持同步的明智方式是什麼?如何在多臺機器之間共享zsh歷史?

+0

如果您在同一時間(同時)在兩臺機器上工作,他們沒有網絡連接,短在兩臺機器的shell中手動重新輸入命令,我不確定是否有一個好的解決方案。 – simont

+0

把你的歷史文件放在Dropbox上怎麼樣? – Simon

+0

我沒有使用Dropbox,但據我瞭解,我不認爲這會工作,因爲我會在幾個(可能)離線機器上同時修改文件。 Dropbox會錯誤地自動或者重命名我的歷史文件,不是嗎? – Matthew

回答

2

嗯,我想你可以識別您的賬戶莫名其妙......那麼你可以做到以下幾點:

  • 修改您的.zshrc以鏈狀從保管箱或SCM的其他帳戶的歷史與當前歷史如果這是當前計算機
  • 然後在推出的第一zsh的使用-n的條目排序(按時間戳排序)
  • 我想如果你有SETOPT HIST_SAVE_NO_DUPS
的zsh會刪除重複

然後,您需要捕獲shell退出,並將現有歷史記錄複製到dropbox/SCM /共享位置。

+0

這大部分工作,但令人遺憾的是,多行命令以這種方式被銷燬(帶有'''''-continuation'或'do'-'done'-blocks的行) – xjcl

0

你可以有一個NFS掛載點互聯網同步巖組歷史其中包含.zsh_history的相關機器。每臺機器都需要將HISTFILE env var設置爲NFS中的文件路徑。

HISTFILE env var是強制性的,因爲ZSH不接受符號鏈接,並且它將被使用最新版本的符號鏈接目標的文件替換。

我沒有測試過上述內容,因爲我的設置位於使用OSX和Parallels共享文件夾的VM之間。因此,使用NFS可以考慮文件的完整性(順序?),也可以使用VS Dropbox解決方案。

不知道,像https://gist.github.com/elim/f77e3e9f06b6f8a5e788可以用來修復版本進行合併...