回答:
bashとzshのデフォルトを使用している場合:
$ cat ~/.histfile >> ~/.bash_history
$ youreditor ~/.zshrc
# Here change your config to:
HISTFILE=~/.bash_history
$ rm ~/.histfile
これで、両方のシェルの履歴に同じファイルができました。
: 1399608924:0;hg diff
、次のような行がありますhg diff
。多分それは私がoh-my-zshを使っているからでしょうか?
unsetopt EXTENDED_HISTORY
bash互換のコマンドのみの履歴を取得する必要があります。
探していたものとは異なりますが、bashからzshにインポートするには、次の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);
});
Eladへの応答として、各コマンドの前に(#)で始まり、(123456789)の後に続く数字がある、.bash_historyファイルがある場合があります(例:#123456789)。bash_historyファイルにこれらの追加の行がある場合は、この変更されたバージョンのEladのコードを使用して、使用するクリーンなzsh形式の履歴を処理します。迅速な変換コードを提供してくれたEladに感謝します。
/*
* 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);
});