partage ou synchronisation de l'historique entre Zsh et Bash

Je me retrouve souvent basculer entre Bash et Zsh, et en utilisant la fonctionnalité de search d'historique pour récupérer une command.

Cependant, puisque Bash et Zsh ont des files d'historique différents, je trouve souvent que la command que je search a été exécutée dans l'autre shell.

Y a-t-il un moyen de partager ou de synchroniser l'histoire entre les deux?

Si vous utilisez les valeurs par défaut pour bash et zsh:

$ cat ~/.histfile >> ~/.bash_history $ youreditor ~/.zshrc # Here change your config to: HISTFILE=~/.bash_history $ rm ~/.histfile 

Maintenant vous avez le même file pour l'histoire dans les deux coquilles.

Pas exactement ce que vous cherchiez, mais pour importer de bash à zsh, vous pouvez utiliser ce script node.js.

  // This is how I used it: // $ node bash-history-to-zsh-history.js >> ~/.zsh_history var fs = require("fs"); var a = fs.readFileSync(".bash_history"); var time = Date.now(); a.toSsortingng().split("\n").forEach(function(line){ console.log(": "+ (time++) + ":0;"+line); }); 

La source

En réponse à Elad, les gens peuvent avoir des files .bash_history qui ont une ligne supplémentaire avant chaque command qui commence par (#) et qui a des numbers de fin suivants (123456789), par exemple: # 123456789. Si votre file bash_history a ces lignes supplémentaires, utilisez cette version modifiée du code d'Elad pour traiter un historique au format zsh propre à utiliser. Merci Elad pour le code de conversion rapide.

 /* * You should backup your .bash_history file first doing this: * $ cp ~/.bash_history ~/.bash_history.backup * * create the .js file to use first: * $ touch ~/.bash-history-to-zsh-history.js * * This is how I use it based on Elads example: * $ node ~/.bash-history-to-zsh-history.js >> ~/.zsh_history * **/ var fs = require("fs"); var a = fs.readFileSync(".bash_history"); var time = Date.now(); a.toSsortingng().split("\n").forEach(function(line){ if (line.indexOf("#")!=0) console.log(": "+ (time++) + ":0;"+line); });