Zsh এ সীমাহীন ইতিহাস


42

ইন zsh, আমি সীমাহীন ইতিহাস পেতে চাই। আমি সেট HISTSIZE=, যা কাজ করে bash। এখন আমি একটি পুরানো ইতিহাস আমদানি করি

mv old_history .history

যা বেশ বড়

wc -l .history
43562 .history

আমি যদি এখন বন্ধ হয়ে zshআবার শুরু করি তবে আমি দেখতে পাচ্ছি

wc -l .history
32234 .history

আমার কি সীমাহীন ইতিহাস থাকতে পারে না zsh?


zsh bash wiki.gentoo.org/wiki/Zsh/Guide# ইতিহাসের চেয়ে আলাদাভাবে কাজ করে বলে মনে হচ্ছে এই গাইডটি আপনাকে zsh ইতিহাসে সহায়তা করবে।
অরেলিন

উত্তর:


50

আপনার মেশিনগুলির সীমা এবং সম্ভাবনা রয়েছে।

HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000000
SAVEHIST=10000000
setopt BANG_HIST                 # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY          # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY             # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST    # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS          # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS      # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS         # Do not display a line previously found.
setopt HIST_IGNORE_SPACE         # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS         # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS        # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY               # Don't execute immediately upon history expansion.
setopt HIST_BEEP                 # Beep when accessing nonexistent history.

থেকে ZSH মেইলিং লিস্টের :

আপনার কত স্মৃতি রয়েছে তা নির্ধারণ করা উচিত, এর কতটুকু আপনি ইতিহাসের দখলে রাখতে পারবেন (এএফআইএকে এটি সর্বদা স্মৃতিতে পুরোপুরি লোড থাকে) এবং সেই অনুসারে কাজ করুন। সীমাটি অপসারণ করা বুদ্ধিমানের কাজ নয় কারণ এটি আপনাকে একটি ধারণা দেয় যে কোনও সীমা নেই যখন এটি সর্বদা উপলব্ধ সংস্থান দ্বারা সীমাবদ্ধ থাকে।

অথবা আপনি যদি মনে করেন না যে আপনি কখনও কখনও উত্সের ক্লান্তিতে কোনও সমস্যার মুখোমুখি হবেন তবে আপনি সীমাবদ্ধতা থেকে লং_ম্যাক্সে HISSIZE সেট করতে পারেন: এটি হিস্টিজের সর্বোচ্চ সংখ্যার হতে পারে is

যা জেন্টুর সমাধান ব্যাখ্যা করে:

export HISTSIZE=2000
export HISTFILE="$HOME/.history"

নিম্নলিখিত আদেশ ব্যতীত ইতিহাস সংরক্ষণ করা হবে না:

export SAVEHIST=$HISTSIZE

ইতিহাসটিকে সদৃশ এন্ট্রি রেকর্ড করা থেকে রোধ করতে (যেমন একক শেল সেশনের সময় ls -l অনেকবার প্রবেশ করেছে), আপনি হস্ত_সাগর_স_আল_ডুপস বিকল্পটি সেট করতে পারেন:

setopt hist_ignore_all_dups

কমপক্ষে একটি স্থান দিয়ে পূর্ববর্তী করে নির্দিষ্ট এন্ট্রিগুলিকে ইতিহাসে রেকর্ড করা থেকে রক্ষা করার জন্য একটি কার্যকর কৌশল।

setopt hist_ignore_space

আমি দেখতে পাচ্ছি না কীভাবে এটি আমার প্রশ্নের উত্তর দেয়। আমার ইতিহাস ফাইলটির আকার 683 কেবি, আমার স্মৃতিশক্তি জন্য নিশ্চয়ই খুব বড় নয়?
pfnuesel

3
ব্যবহারকারীর রফতানি HISSIZE = 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 আপনার কম্পিউটারের সম্ভাবনার বাইরে চলে যাবে। আপনার ইচ্ছাকে এবং কম্পিউটারের সম্ভাব্যতায় যথাসম্ভব সেরা ফিট করার জন্য আপনাকে সেই নম্বরটি সেট করতে হবে।
অরেলিন

আমি এটি সেট করতে পারি 50000, তবে এটি আমার সমস্যার সমাধান করবে না।
pfnuesel

1
আপনার প্রশ্নটি কি আমার কাছে zsh এ সীমাহীন ইতিহাস থাকতে পারে না? জেডএসএইচ লেখক কোনও উত্তর দেয় না তবে আপনি এটি আপনার পছন্দমতো সেট করতে পারেন। জেন্টু ঠিক কীভাবে এটি ব্যাখ্যা করে।
অরেলিন

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

17

আপনার উভয় HISTSIZEএবং সেট করতে হবে SAVEHIST। এগুলি নির্দেশ করে যে ইতিহাসের কতগুলি রেখা স্মৃতিতে রাখতে হবে এবং যথাক্রমে ইতিহাসের ফাইলে কত লাইন রাখতে হবে।

আমি মনে করি না zsh এর এমন একটি সেটিংস রয়েছে যার অর্থ "অসীম", তবে সমস্ত ব্যবহারিক উদ্দেশ্যে এক বিলিয়ন অসীম, যখন বাকি রয়েছে 32-বিট মেশিনে মেশিনের প্রতিনিধিত্বযোগ্য।

HISTFILE=~/.zsh_history
HISTSIZE=999999999
SAVEHIST=$HISTSIZE

স্মরণে এত বড় সংখ্যক লাইন আমার কম্পিউটারকে ধীর করে দেওয়ার বিষয়ে কি আমার চিন্তা করা উচিত?
বেকো

7
2010 এর পিসি ধীর করার জন্য আপনি আপনার জীবনের সময়টিতে যথেষ্ট ইতিহাসের লাইন টাইপ করতে যাচ্ছেন না।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

1

10000ওহ-মাই- zsh এর নিজস্ব HISTSIZEএবং SAVEHISTমানগুলি নির্ধারণ না করা অবধি আমি ইতিহাসকে মুছে ফেলাতে সমস্যা বোধ করছিলাম । টি এল; ডিআর, আপনার নীচের অংশে অবস্থিত লাইন রাখার বিষয়টি নিশ্চিত করুন .zshrc


0

সমস্যাটি zshআমার বা আমার .zshrcনয়, আমার ইতিহাস নিয়ে। এখানে কিছু অডবোল এন্ট্রি ছিল

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@#1453692179

বিভ্রান্ত zshএবং এই এন্ট্রিগুলির পরে সমস্ত কিছু কেটে ফেলা হয়েছে। আমি জানি না কী চরিত্রের ^@সাথে সম্পর্কিত, বা কীভাবে এই ইতিহাসগুলি আমার ইতিহাসে শেষ হয়েছিল, কিন্তু সেগুলি মুছে ফেলার ফলে সমস্যাটি স্থির হয়েছে।


আপনি কোন টার্মিনাল এবং সম্পাদক ব্যবহার করেন?
অরেলিন

কারণ এখন প্রশ্ন, এটি কি আবার পরে ফিরে আসবে?
অরেলিয়ান

terminologyএবং vim
pfnuesel

1
^@ASCII NUL ( \0) চরিত্রটি।
মুড়ু

6
^ @ ^ @ ^ @ ^ @ অক্ষরগুলি শূন্য হয় এবং যখন দুটি প্রোগ্রাম একই সময়ে একই ফাইলটিতে লেখার চেষ্টা করে এবং তারা পারমাণবিক লেখাগুলি ব্যবহার না করে (যেমন: তারা বাফার লেখনী হয়) বা লক করে থাকে । বা এটি ফাইল সিস্টেমের দুর্নীতি, ব্যাকআপ থেকে খারাপ পুনরুদ্ধার বা এর মতো হতে পারে।
ব্যবহারকারী 222658
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.