ব্যাশ হিস্টিজ বনাম হিস্টফিলিজ?


174

HISTSIZEবনাম মধ্যে পার্থক্য কি HISTFILESIZE?

এগুলি ব্যাশ ইতিহাসকে ডিফল্ট 500 লাইন ছাড়িয়ে প্রসারিত করতে ব্যবহৃত হয়।

এগুলি কেন প্রয়োজন তা নিয়ে এখানে এবং অন্যান্য ফোরামে এখানে স্পষ্টতার অভাব রয়েছে বলে মনে হয়। ( উদাহরণ 1 , উদাহরণ 2 , উদাহরণ 3 )।

উত্তর:


289

সংক্ষিপ্ত উত্তর:

HISTSIZE আপনার বাশ সেশন চলমান থাকাকালীন ইতিহাসের তালিকায় মেমরিতে সংরক্ষিত লাইন বা কমান্ডের সংখ্যা।

HISTFILESIZE একটি সেশন শুরুর সময় ইতিহাসের ফাইলটিতে (ক) অনুমোদিত লাইন বা কমান্ডের সংখ্যা এবং (খ) ভবিষ্যতের সেশনে ব্যবহারের জন্য আপনার বাশ সেশন শেষে ইতিহাসের ফাইলে সংরক্ষণ করা হয়।

fileডিস্কে - এবং list: মেমরিতে: এর মধ্যে পার্থক্যটি লক্ষ্য করুন ।

দীর্ঘ উত্তর:

উপরের সমস্ত তথ্য + কিছু উদাহরণ:

উদাহরণ 1 : HISTFILESIZE=10এবংHISTSIZE=10

  1. আপনি আপনার সেশন শুরু করুন।
  2. আপনার হিস্টফিল (আপনার ব্যাশ কমান্ডের ইতিহাস সংরক্ষণ করে এমন ফাইল), HISTFILESIZE = 10 টি লাইন ধারণ করার জন্য কেটে ফেলা হয়েছে।
  3. আপনি 50 লাইন লিখুন।
  4. আপনার 50 টি কমান্ডের শেষে, কেবলমাত্র 41 থেকে 50 কমান্ডগুলিই আপনার ইতিহাস তালিকায় রয়েছে, যার আকার HISSIZE = 10 দ্বারা নির্ধারিত হয়।
  5. আপনি আপনার অধিবেশন শেষ।
  6. ধরে histappendনেওয়া সক্ষম নয়, 41 থেকে 50 কমান্ডগুলি আপনার হিস্টফায়লে সংরক্ষিত আছে যার এখন 10 টি কমান্ড এটি শুরুতে অনুষ্ঠিত হয়েছে এবং 10 টি নতুন লিখিত কমান্ড রয়েছে।
  7. আপনার HISTFILE কে HISTFILESIZE = 10 টি লাইন ধারণ করতে ছাঁটা হয়েছে।
  8. আপনার ইতিহাসে এখন 10 টি কমান্ড রয়েছে - আপনি সদ্য শেষ হওয়া সেশনে আপনি সর্বশেষ 10 টাইপ করেছেন।
  9. আপনি যখন একটি নতুন অধিবেশন শুরু করেন, আপনি 1 এ HISFILESIZE = 10 এর HISTFILE দিয়ে শুরু করবেন।

উদাহরণ 2 : HISTFILESIZE=10এবংHISTSIZE=5

  1. আপনি আপনার সেশন শুরু করুন।
  2. আপনার হিস্টফিল (ফাইল যা আপনার ব্যাশ কমান্ডের ইতিহাস সংরক্ষণ করে), সর্বাধিক HISTFILESIZE = 10 টি লাইন ধারণ করার জন্য কেটে ফেলা হয়।
  3. আপনি 50 লাইন লিখুন।
  4. আপনার 50 টি কমান্ডের শেষে, 46 থেকে 50 টি কমান্ড কেবল আপনার ইতিহাস তালিকায় রয়েছে, যার আকার HISSIZE = 5 দ্বারা নির্ধারিত হয়।
  5. আপনি আপনার অধিবেশন শেষ।
  6. ধরে histappendনেওয়া সক্ষম নয়, 46 থেকে 50 কমান্ডগুলি আপনার HISFILE এ সংরক্ষিত আছে যার এখন 10 টি কমান্ড এটি শুরুতে অনুষ্ঠিত হয়েছে এবং 5 টি নতুন লিখিত কমান্ড রয়েছে।
  7. আপনার HISTFILE কে HISTFILESIZE = 10 টি লাইন ধারণ করতে ছাঁটা হয়েছে।
  8. আপনার এখন আপনার ইতিহাসে 10 টি কমান্ড রয়েছে - আগের সেশন থেকে 5 এবং শেষ 5 আপনি সেশনটিতে সবেমাত্র টাইপ করেছেন যা সবে শেষ করেছেন।
  9. আপনি যখন একটি নতুন অধিবেশন শুরু করেন, আপনি 1 এ HISFILESIZE = 10 এর HISTFILE দিয়ে শুরু করবেন।

উদাহরণ 3 : HISTFILESIZE=5এবংHISTSIZE=10

  1. আপনি আপনার সেশন শুরু করুন।
  2. আপনার হিস্টফিল (ফাইল যা আপনার ব্যাশ কমান্ডের ইতিহাস সংরক্ষণ করে), সর্বাধিক HISTFILESIZE = 5 টি লাইন ধারণ করার জন্য কেটে ফেলা হয়।
  3. আপনি 50 লাইন লিখুন।
  4. আপনার 50 টি কমান্ডের শেষে, কেবলমাত্র 41 থেকে 50 কমান্ডগুলিই আপনার ইতিহাস তালিকায় রয়েছে, যার আকার HISSIZE = 10 দ্বারা নির্ধারিত হয়।
  5. আপনি আপনার অধিবেশন শেষ।
  6. ধরে histappendনেওয়া সক্ষম নয়, 41 থেকে 50 কমান্ডগুলি আপনার হিস্টফায়লে সংরক্ষিত আছে যা এখন 5 টি কমান্ড এটি শুরুতে অনুষ্ঠিত হয়েছে এবং 10 টি নতুন লিখিত কমান্ড রয়েছে।
  7. আপনার HISTFILE কে HISTFILESIZE = 5 টি লাইন ধারণ করার জন্য সঙ্কুচিত করা হয়েছে।
  8. আপনার ইতিহাসে এখন আপনার কাছে 5 টি কমান্ড রয়েছে - শেষ 5 টি আপনি সদ্য সমাপ্ত সেশনে সবেমাত্র টাইপ করেছেন।
  9. আপনি যখন একটি নতুন অধিবেশন শুরু করবেন, আপনি 1 ম পদক্ষেপে HISTFILESIZE = 5 এর HISTFILE দিয়ে শুরু করবেন।

এলিকাসির_সিনারি থেকে তথ্য :

আপনি আদেশগুলি টাইপ করার সাথে সাথে "ফাইল" ইতিহাস আপডেট করা হয়নি। কমান্ডগুলি পৃথকভাবে একটি "তালিকায়" সংরক্ষণ করা হয় (ইতিহাসের আদেশ দ্বারা অ্যাক্সেস করা হয়)। এই সঞ্চিত কমান্ডগুলির সংখ্যা HISSIZE মান দ্বারা নিয়ন্ত্রিত হয়। শেলটি (ইন্টারেক্টিভ) প্রস্থান করলে, সর্বশেষ $ HISSIZE লাইনগুলি সেই "তালিকা" থেকে $ HISTFILE এ অনুলিপি / সংযুক্ত করা হয়। যদি HISTFILESIZE সেট করা থাকে, তবে এই অপারেশনের পরে, এটি নিশ্চিত করা হয় যে কেবলমাত্র $ HISFILESIZE লাইন (সর্বশেষ) exist HISTFILE- এ বিদ্যমান। এবং যখন শেলটি শুরু হয়, তখন "তালিকা" সর্বাধিক $ HISSIZE কমান্ড অবধি $ HISTFILE থেকে শুরু করা হয়।

এবং man bashপৃষ্ঠাটি থেকে :

ইতিহাসের তালিকায় সংরক্ষণের জন্য হিস্টসিজিই ভেরিয়েবলের মান হ'ল আদেশের সংখ্যা হিসাবে ব্যবহৃত হয়। সর্বশেষ HISTSIZ কমান্ডের পাঠ্য (ডিফল্ট 500) সংরক্ষণ করা হয়েছে। (...)

প্রারম্ভকালে, ইতিহাসটি ভেরিয়েবল এইচআইএসটিফাইলে (ডিফল্ট ~ / .bash_history) নামের ফাইল থেকে শুরু করা হয়। HISTFILE এর মান অনুসারে ফাইলটি সঙ্কুচিত হয়েছে, যদি প্রয়োজন হয় তবে HISTFILESIZE এর মান দ্বারা নির্দিষ্ট লাইনগুলির সংখ্যার চেয়ে বেশি থাকে না। (...) যখন কোনও ইন্টারেক্টিভ শেলটি প্রস্থান করে, ইতিহাসের তালিকা থেকে শেষ $ HISSIZE রেখাগুলি অনুলিপি করা হয় $ হিস্টফায়লে। যদি হিস্টপেন্ড শেল বিকল্পটি সক্ষম করা থাকে (নীচে শেল বিল্টিন কম্যান্ডের অধীনে শপটের বর্ণনা দেখুন), লাইনগুলি ইতিহাসের ফাইলে সংযুক্ত করা হয়, অন্যথায় ইতিহাস ফাইলটি ওভাররাইট করা হয়। এইচআইএসএফআইএল যদি সেট না করা থাকে বা ইতিহাসের ফাইলটি লিখনযোগ্য হয় তবে ইতিহাস সংরক্ষণ করা হয় না। (...) ইতিহাস সংরক্ষণ করার পরে, ইতিহাসের ফাইলটি হিস্টফায়ালাইস লাইন ছাড়া আর না থাকায় কেটে ফেলা হয়। যদি HISTFILESIZE সেট না করা থাকে,


27
+1 এই উত্তরটি চিত্তাকর্ষকভাবে পুরোপুরি! খানিকটা বেশি হলেও, আমার মনে হয়। বেশিরভাগ লোক এর শেষ প্রান্তে পৌঁছায় না। আমি মনে করি আপনার এটি সংক্ষেপে বিবেচনা করা উচিত
slezica

22
@ স্লেজিকা আমি আপনার মন্তব্যের দ্বিতীয় অংশের সাথে একমত নই: আমি এর শেষে পৌঁছেছি এবং আমি বলতে পারি যে উত্তরের প্রতিটি বিট তথ্য কার্যকর। কিছু লোক কয়েকটি লাইন পড়তে খুব অলস হয় তা অন্যদের জন্য দরকারী তথ্য অপসারণকে ন্যায়সঙ্গত করা উচিত নয়।
বস্টিয়েন

1
@ বাসটিয়েন ধরে নিচ্ছেন যে আপনি একটি বুলেট পয়েন্ট পার্সার, আপনার এটি পড়তে কোনও অসুবিধা হবে না।
পিথিকোস

6
দেখুন, আমার হার্ড ড্রাইভটি 1 টিবি এবং মূলত খালি, এবং আমার কাছে নিষ্ক্রিয় সিপিইউ চক্র এবং র‌্যাম রয়েছে এবং আমি যথাসম্ভব যথাসম্ভব বাশ ইতিহাস সংরক্ষণ করতে চাই - সুতরাং যখন আমাকে এই বোকা আদেশটি সন্ধান করতে হবে না ' দুই বছরের মধ্যে চালানো নয়, আমি জানি এটি আমার বাশ ইতিহাসে। এটি আরও কংক্রিট করার জন্য, আসুন ব্যাশ ইতিহাসের 50 এমবি অবধি বলা যাক। আপনি কোন মূল্যবোধের প্রস্তাব দিচ্ছেন?
সিভিফ্যান

2
@ ম্যাথু আফসোস, এটি জানেন না!
আর্টুরম্প

6

আর্টআরম্প কী বলেছে তার উপরে ভিত্তি করে তৈরি করা এবং এটিকে কিছুটা পরিষ্কার করার প্রয়াসে।

ধরে নিচ্ছি আপনার কাছে 2000-দীর্ঘ কিছু ইতিহাস রয়েছে ..

~$ history
    1  sdf
    2  fghdfgjf
    3  fghfghdf
   ..  ..
 2027  78
 2028  57
 2029  yu45u

আপনার সাথে যা প্রদর্শিত হবে আপনি তা কেটে ফেলতে পারেন HISTSIZE

~$ HISTSIZE=5
~$ history
 2026  546
 2027  78
 2028  56
 2029  yu45u
 2030  HISTSIZE=5

এখন যতই কমান্ড টাইপ করুন না কেন, কেবল সর্বশেষ 5 টি রেকর্ড করা হবে।

~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
    1  sdf
    2  fghdfgjf
    3  fghfghdf
   ..  ..
 2028  56
 2029  yu45u
 2030  HISTSIZE=5
 2031  GGH
 2032  GSDHFG
 2033  JFDR
 2034  ABSDDS
 2035  AHFGHFD

আমরা পরিষ্কারভাবে দেখতে পারি যে আমাদের প্রথম কমান্ড ("এবিসি") ইতিহাসে নেই কারণ কেবল সর্বশেষ 5 টি কমান্ড রেকর্ড করা হয়েছিল।

এখন, মোট ইতিহাস কোনও ফাইলে ( .bash_history) সঞ্চিত রয়েছে এবং আপনি এই ফাইলটির সাথে কতক্ষণ সময় পাবে তা পরিবর্তন করতে পারবেন HISTFILESIZE। উদাহরণস্বরূপ একটি সহ 2033 HISTFILESIZE, আমার ক্ষেত্রে আমার এটি হবে:

~$ history
    1  fghfghdf
    2  gegege
    3  gege
   ..  ..
 2028  HISTSIZE=5
 2029  GGH
 2030  GSDHFG
 2031  JFDR
 2032  ABSDDS
 2033  AHFGHFD

3
তুমি কি মান সুপারিশ করবে যদি আমি চাই সব থেকে ইতিহাস সব , ব্যাশ ইতিহাস সংরক্ষণ করা জন্য সংঘটনশীল টার্মিনাল চিরতরে ? অন্য কথায়, সবসময় সংরক্ষণ করুন এবং সর্বদা কিছু মুছুন না।
সিভিফ্যান

10
@ সিভিফ্যান: সেট HISTSIZE=-1এবং HISTFILESIZE=-1
এম ডুডলি

2
এটা মৃত ভুল। এটি -1 এ সেট করা সবকিছু মুছে ফেলবে।
ব্রেন্ডন বাইার্ড

3
@ ব্রেন্ডনবায়ার্ড দ্য bashপৃষ্ঠাটি বলেছে: Non-numeric values and numeric values less than zero inhibit truncationতবে তখন আমার এই ইতিহাসটি সত্য করে
তুলতে

3
@SebMa আমি আমার সেটিংস পরিবর্তন করেছি HISTSIZE='INFINITY'এবং এ HISTFILESIZE='ANDBEYOND'। যেহেতু তারা অ-সংখ্যাযুক্ত তারা সমস্ত কিছু সংরক্ষণ করে। বখশিশের জন্য ধন্যবাদ!
কনার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.