Bash와 Zsh를 전환하고 기록 검색 기능을 사용하여 명령을 복구하는 경우가 종종 있습니다.
그러나 Bash와 Zsh에는 다른 기록 파일이 있기 때문에 검색하려는 명령이 다른 셸에서 실행 된 경우가 종종 있습니다.
둘 사이에서 히스토리를 공유하거나 동기화 할 수있는 방법이 있습니까?
답변
bash 및 zsh의 기본값을 사용하는 경우 :
$ cat ~/.histfile >> ~/.bash_history
$ youreditor ~/.zshrc
# Here change your config to:
HISTFILE=~/.bash_history
$ rm ~/.histfile
이제 두 쉘 모두에서 동일한 히스토리 파일이 있습니다.
답변
정확히 당신이 찾고있는 것이 아니라 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 형식의 히스토리를 처리하십시오. 빠른 변환 코드에 감사드립니다.
/*
* 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);
});