совместное использование или синхронизация истории между Zsh и Bash

Имейте оболочку, перечисляют точечные файлы и говорят ls не видеть через каталоги:

ls -d .*
12
19.09.2011, 13:01
3 ответа

Если Вы используете значения по умолчанию для удара и zsh:

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

Теперь у Вас есть тот же файл для истории в обеих оболочках.

10
27.01.2020, 19:56
  • 1
    Это действительно работает?? Два histfiles имеют совершенно другие форматы! –  Neil Traft 12.07.2014, 10:48
  • 2
    Да, обе оболочки используют тот же формат. Одна команда на строку. –  Rufo El Magufo 13.07.2014, 21:32
  • 3
    , как который Мой .zsh_history имеет строки : 1399608924:0;hg diff тогда как мой .bash_history имеет просто hg diff. Возможно, это - потому что я использую oh-my-zsh? –  Neil Traft 15.07.2014, 02:58
  • 4
    , Возможно. Или некоторая опция zsh. Я не знаю. –  Rufo El Magufo 16.07.2014, 03:03
  • 5
    необходимо сделать unsetopt EXTENDED_HISTORY получить совместимую с ударом историю только для команды. –  Matija Nalis 03.02.2016, 00:54
[118305] Не совсем то, что вы искали, но чтобы импортировать из bash в zsh, вы можете использовать этот скрипт node.js:[12380]Source[12381]
2
27.01.2020, 19:56

В ответ на Elad у людей могут быть файлы .bash_history с дополнительной строкой перед каждой командой, которая начинается с (#) и имеет конечные цифры после (123456789 ), например: # 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);
});
1
27.01.2020, 19:56

Теги

Похожие вопросы