ইতিহাসের আকার নিয়ন্ত্রণ করে এমন দুটি ভেরিয়েবল রয়েছে:
ইতিহাস ফাইলটিতে সর্বাধিক সংখ্যক রেখাগুলি হিস্টফিলিজ করুন। যখন এই ভেরিয়েবলটিকে একটি মান নির্ধারিত করা হয়, তখন ইতিহাসের ফাইলটি পুরানো এন্ট্রিগুলি সরিয়ে ওই সংখ্যার চেয়ে বেশি লাইন না রাখার জন্য প্রয়োজন হয় tr ইতিহাসের ফাইলটি শেলটি প্রস্থান করার সময় এটি লেখার পরে এই আকারে ছাঁটা হয়। মান 0 হলে, ইতিহাসের ফাইলটি শূন্য আকারে কেটে যায়। অ-সংখ্যাসূচক মান এবং সংখ্যাসূচক মানগুলি শূন্যের চেয়ে কম বাধা দেয়। শেলটি কোনও স্টার্টআপ ফাইল পড়ার পরে HISSIZE এর মানতে ডিফল্ট মান সেট করে।
এবং
হিস্টিজ করুন কমান্ডের ইতিহাসে কমান্ডের সংখ্যা মনে রাখার জন্য (নীচে ইতিহাস দেখুন)। মান 0 হলে কমান্ডগুলি ইতিহাসের তালিকায় সংরক্ষণ করা হয় না। ইতিহাসের তালিকায় প্রতিটি কমান্ড সংরক্ষণের ফলে শূন্যের চেয়ে কম সংখ্যাসূচক মানের ফলাফল হয় (কোনও সীমা নেই)। শেলটি কোনও স্টার্টআপ ফাইলগুলি পড়ার পরে 500 এ ডিফল্ট মান সেট করে।
এই দুটি পরিবর্তনশীল আপনাকে আপনার ইতিহাসের আচরণ নিয়ন্ত্রণ করতে দেয়। মূলত, HISTSIZEআপনার বর্তমান অধিবেশন চলাকালীন কমান্ডের সংখ্যা এবং HISTFILESIZEএটি অধিবেশনগুলির মধ্যে স্মরণীয় আদেশগুলির সংখ্যা। সুতরাং, উদাহরণস্বরূপ:
$ echo $HISTSIZE
10
$ echo $HISTFILESIZE
5
$ history | wc
10 29 173
উপরের উদাহরণে, কারণ HISTSIZE10 এ সেট করা হয়েছে, history10 কমান্ডের একটি তালিকা প্রদান করে। যাইহোক, যদি আপনি লগ আউট এবং তারপর পুনরায় লগ-ইন, historyমাত্র 5 কমান্ড ফিরে আসবে কারণ HISTFILESIZE5. সেট এর কারণ, একবার আপনি আপনার সেশন থেকে প্রস্থান করুন, আপনার হয় HISTFILESIZEআপনার ইতিহাস লাইনের আপনার ইতিহাস ফাইল (এ সঞ্চিত হয় ~/.bash_historyডিফল্টরূপে কিন্তু নিয়ন্ত্রিত HISTFILE)। অন্য কথায়, কমান্ডগুলি যোগ করা হয় HISTFILEযতক্ষণ না এটি $HISTFILESIZEলাইন পৌঁছে যায় , প্রতিটি পরবর্তী লাইন যুক্ত হওয়া মানে ফাইলের প্রথম কমান্ড অপসারণ করা হবে।
আপনি এইগুলিতে ভেরিয়েবলের মান সেট করতে পারেন ~/.profile(বা ~/.bash_profileযদি সেই ফাইলটি বিদ্যমান থাকে)। এগুলিকে আপনার ~/.bashrcপ্রথমে সেট করবেন না কারণ তাদের কোনও ব্যবসা সেট করা হচ্ছে না এবং দ্বিতীয়ত কারণ এটি আপনাকে লগইন বনাম নন-লগইন শেলগুলির কারণে অন্যরকম আচরণ করতে পারে যা অন্যান্য সমস্যার কারণ হতে পারে ।
অন্যান্য দরকারী পরিবর্তনশীল যা আপনাকে আপনার ইতিহাসের আচরণের সূক্ষ্ম সুরক্ষিত করতে দেয়:
HISTIGNORE: এটি আপনাকে কিছু সাধারণ কমান্ড উপেক্ষা করতে দেয় যা খুব কম আগ্রহী। উদাহরণস্বরূপ, আপনি সেট করতে পারেন:
export HISTIGNORE="pwd:df:du"
যে কোনো কমান্ড দিয়ে শুরু কারণ হবে pwd, dfঅথবা duউপেক্ষা করা প্রয়োজন এবং আপনার ইতিহাসে সংরক্ষিত হয়নি।
HISTCONTROL: এটি ইতিহাস আপনাকে কীভাবে কাজ করে তা চয়ন করতে দেয়। ব্যক্তিগতভাবে, আমি এটি সেট করেছিলাম HISTCONTROL=ignoredupsযার ফলে এটি কেবল একবারে সদৃশ কমান্ডগুলি সংরক্ষণ করে। অন্যান্য বিকল্পগুলি ignorespaceহ'ল স্পেস থেকে শুরু হওয়া কমান্ডগুলি উপেক্ষা করা হবে এবং erasedupsযার ফলে বর্তমান লাইনটির সাথে মিল থাকা সমস্ত পূর্ববর্তী রেখাগুলি সেই তালিকাটি সংরক্ষণ করার আগে ইতিহাসের তালিকা থেকে মুছে ফেলা হবে। ignorebothঅবহেলা এবং উপেক্ষা করার জন্য শর্টহ্যান্ড।
HISTTIMEFORMAT: এটি আপনাকে ইতিহাসের ফাইলের সময় বিন্যাসটি সেট করতে দেয়। পান্ড্যের উত্তর দেখুন বা man bashবিশদে পড়ুন।
আরও সূক্ষ্ম সুরের জন্য আপনার কাছে রয়েছে:
histappendব্যাশ বিকল্প। এটি আপনার চালানো shopt -s histappendবা আদেশটি যোগ করে সেট করা যেতে পারে ~/.bashrc। যদি এই বিকল্পটি সেট করা থাকে
ইতিহাসের তালিকাটি ফাইলটি ওভার রাইটিংয়ের পরিবর্তে শেলটি প্রস্থান করার সময় শিরোনাম থেকে বেরিয়ে আসার পরে এইচআইএসটিফায়াল ভেরিয়েবলের মান দ্বারা যুক্ত ফাইলটিতে সংযুক্ত করা হয়।
এটি খুব কার্যকর কারণ এটি আপনাকে বিভিন্ন সেশনের ইতিহাস একত্রিত করতে দেয় (উদাহরণস্বরূপ বিভিন্ন টার্মিনালগুলি ভাবেন)।
historyকমান্ড দুই দরকারী অপশন রয়েছে:
উদাহরণস্বরূপ, আপনি এই দুটি কমান্ড যুক্ত করতে পারেন PROMPT_COMMAND(যা প্রতিটি সময় আপনার শেল প্রম্পট দেখায় তখনই কার্যকর করা হয়, সুতরাং যখনই আপনি একটি নতুন শেল শুরু করবেন এবং প্রতিটি কমান্ডের পরে আপনি এটি চালাবেন):
export PROMPT_COMMAND='history -a;history -r;'
সংযুক্ত, তারা নিশ্চিত করে যে আপনার যে কোনও নতুন টার্মিনালটি খোলার সাথে সাথে অন্য কোনও শেল সেশনের ইতিহাস আমদানি করা হবে। ফলাফলটি সমস্ত টার্মিনাল / শেল সেশন জুড়ে একটি সাধারণ ইতিহাস।