Zsh ve Bash arasında geçmiş paylaşımı veya senkronizasyonu


12

Sık sık kendimi Bash ve Zsh arasında geçiş yaparken ve bir komutu kurtarmak için geçmiş arama işlevini kullanarak buluyorum.

Ancak, Bash ve Zsh'ın farklı geçmiş dosyaları olduğundan, aradığım komutun diğer kabukta yürütüldüğünü sık sık bulurum.

Bu ikisi arasında geçmişi paylaşmanın veya senkronize etmenin herhangi bir yolu var mı?


1
Bash ve zsh sözdizimi, diğer kabuğa kopyalandığında çalışmayan birçok komutla sonuçlanacak kadar farklıdır.
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


10

Bash ve zsh için varsayılanları kullanıyorsanız:

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

Şimdi her iki kabukta da tarih için aynı dosya var.


2
Bu gerçekten işe yarıyor mu ?? İki hist dosyası tamamen farklı formatlara sahiptir!
Neil Traft

1
Evet, her iki kabuk da aynı biçimi kullanır. Her satıra bir komut.
Rufo El Magufo

3
.Zsh_history'm gibi satırlar : 1399608924:0;hg diffvar hg diff. Belki de oh-my-zsh kullandığım için mi?
Neil Traft

Olabilir. Veya bazı zsh seçenekleri. Bilmiyorum.
Rufo El Magufo

4
unsetopt EXTENDED_HISTORYbash uyumlu yalnızca komut geçmişini almak için yapmanız gerekir .
Matija Nalis

2

Tam olarak aradığınız şey değil, ancak bash'den zsh'a aktarmak için bu node.js komut dosyasını kullanabilirsiniz:

// 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);
});

Kaynak


1

Elad'a yanıt olarak, insanlar (#) ile başlayan ve (123456789) sonrasında takip eden rakamlardan oluşan her komuttan önce fazladan bir satır içeren .bash_history dosyalarına sahip olabilirler, örneğin: # 123456789. Bash_history dosyanız bu ekstra satırlara sahipse, temiz bir zsh biçimlendirilmiş geçmiş kullanmak için Elad kodunun bu değiştirilmiş sürümünü kullanın. Hızlı dönüşüm kodu için teşekkürler 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);
});
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.