Zsh এবং বাশের মধ্যে ইতিহাস ভাগ করে নেওয়া বা সিঙ্ক্রোনাইজ করা


12

আমি প্রায়শই নিজেকে বাশ এবং জেডএসের মধ্যে স্যুইচিং করতে এবং একটি কমান্ড পুনরুদ্ধারের জন্য ইতিহাস অনুসন্ধান কার্যকারিতা ব্যবহার করে দেখতে পাই।

তবে, যেহেতু বাশ এবং জেডের পৃথক ইতিহাসের ফাইল রয়েছে, আমি প্রায়শই দেখতে পাই যে কমান্ডটি আমি অনুসন্ধান করছি তা অন্য শেলের মধ্যে কার্যকর হয়েছে।

দুজনের মধ্যে ইতিহাস ভাগ বা সংহত করার কোনও উপায় আছে কি?


1
ব্যাশ এবং zsh এর সিনট্যাক্সটি যথেষ্ট আলাদা যে আপনি অন্য শেলটিতে অনুলিপি করার সময় কাজ না করে এমন অনেকগুলি কমান্ড দিয়ে শেষ করতে চান।
গিলস 'দুষ্ট হওয়া বন্ধ করুন'

উত্তর:


10

আপনি যদি ব্যাশ এবং zsh এর জন্য ডিফল্ট ব্যবহার করেন:

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

উভয় শেলের ইতিহাসের জন্য এখন আপনার কাছে একই ফাইল রয়েছে।


2
এটি কি সত্যিই কাজ করে ?? দুটি হিস্টফিলের সম্পূর্ণ আলাদা ফর্ম্যাট রয়েছে!
নীল ট্রাফট

1
হ্যাঁ, উভয় শেল একই ফর্ম্যাট ব্যবহার করে। প্রতি লাইনে একটি কমান্ড।
রুফো এল মাগুফো

3
আমার .zsh_history এর মত লাইন রয়েছে : 1399608924:0;hg diffযেখানে আমার .Bash_History কেবল আছে hg diff। সম্ভবত এটি কারণ আমি ওহ-মাই-জেডএস ব্যবহার করছি?
নিল ট্রাফ্ট

হতে পারে. অথবা zsh এর কিছু বিকল্প। আমি জানি না।
রুফো এল মাগুফো

4
unsetopt EXTENDED_HISTORYকেবলমাত্র বাশ-সামঞ্জস্যপূর্ণ কমান্ড-কেবলমাত্র ইতিহাস পেতে আপনার প্রয়োজন ।
মাতিজা নালিস

2

আপনি যা খুঁজছিলেন ঠিক তা নয়, বাশ থেকে zsh এ আমদানি করতে আপনি এই নোড.জেএস স্ক্রিপ্টটি ব্যবহার করতে পারেন:

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

সূত্র


1

এলাদের প্রতিক্রিয়া হিসাবে, লোকেদের কাছে .bash_history ফাইল থাকতে পারে যা প্রতিটি কমান্ডের আগে একটি অতিরিক্ত লাইন থাকে (#) দিয়ে শুরু হয় এবং এর পরে (123456789) এর পরে অঙ্কগুলি থাকে, উদাহরণস্বরূপ: # 123456789। যদি আপনার bash_history ফাইলটিতে এই অতিরিক্ত লাইন থাকে তবে ব্যবহারের জন্য একটি পরিষ্কার 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);
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.