compartilhando ou sincronizando histórico entre Zsh e Bash

10

Frequentemente me encontro alternando entre Bash e Zsh e usando a funcionalidade de pesquisa de histórico para recuperar um comando.

No entanto, como o Bash e o Zsh têm arquivos de histórico diferentes, geralmente descubro que o comando que estou procurando foi executado no outro shell.

Existe alguma maneira de compartilhar ou sincronizar o histórico entre os dois?

    
por Andrei 19.09.2011 / 12:01

3 respostas

6

Se você estiver usando os padrões para bash e zsh:

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

Agora você tem o mesmo arquivo para histórico em ambos os shells.

    
por 19.09.2011 / 20:38
3

Não é exatamente o que você procurava, mas para importar do bash para o zsh, você pode usar esse 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.toString().split("\n").forEach(function(line){
     console.log(": "+ (time++) + ":0;"+line);
   });

Fonte

    
por 20.03.2014 / 10:58
1

Em resposta a Elad, as pessoas podem ter arquivos .bash_history que tenham uma linha extra antes de cada comando que comece com (#) e tenha os seguintes dígitos (123456789), por exemplo: # 123456789. Se o seu arquivo bash_history tiver essas linhas extras, use esta versão modificada do código do Elad para processar um histórico limpo e formatado em zsh a ser usado. Obrigado Elad pelo código de conversão rápido.

/*
 * 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.toString().split("\n").forEach(function(line){
  if (line.indexOf("#")!=0) console.log(": "+ (time++) + ":0;"+line);
});
    
por 15.10.2015 / 06:05