আপনার ইতিহাসে একটি কমান্ড সংরক্ষণ না করে কেবল এটির আগে একটি স্থান ( ␣
এখানে চিহ্নিত ):
$ echo test
test
$ history | tail -n2
3431 echo test
3432 history | tail -n2
$ ␣echo test2
test2
$ history | tail -n2
3431 echo test
3432 history | tail -n2
এই আচরণটি আপনার ~/.bashrc
ফাইলে সেট করা হয়েছে , এই পংক্তিতে:
HISTCONTROL=ignoreboth
man bash
বলেছেন:
HISTCONTROL
ইতিহাস তালিকায় কমান্ডগুলি কীভাবে সংরক্ষণ করা হয় তা নিয়ন্ত্রণ করে মানগুলির একটি কোলন-বিভক্ত তালিকা। মূল্যবোধের তালিকা অন্তর্ভুক্ত থাকে
ignorespace , লাইন যা একটি স্থান অক্ষর দিয়ে শুরু ইতিহাস তালিকায় সংরক্ষিত হয় না । উপেক্ষা করা একটি মান পূর্ববর্তী ইতিহাস প্রবেশের সাথে মিলিত রেখাগুলি সংরক্ষণ না করার কারণ করে। অগ্রাহ্য স্থানের একটি মূল্য
হ'ল উপেক্ষার স্থান এবং উপেক্ষা করার জন্য শর্টহ্যান্ড ।
ignoredups
history | tail -n2
যাইহোক, উপরের পরীক্ষায় ইতিহাসে একবারে উপস্থিত হওয়ার কারণ ।
একটি টার্মিনালের ইতিহাস র্যামে সংরক্ষিত হয় এবং ~/.bash_history
আপনি টার্মিনালটি বন্ধ করার সাথে সাথেই আপনার কাছে পৌঁছে যায় । আপনি যদি কোনও নির্দিষ্ট এন্ট্রি মুছতে চান তবে আপনি এটি দিয়ে ~/.bash_history
করতে পারেন sed
:
# print every line…
sed '/^exit$/!d' .bash_history # … which is just “exit”
sed '/^history/!d' .bash_history # … beginning with “history”
sed '/>>log$/!d' .bash_history # … ending with “>>log”
sed '\_/path/_!d' .bash_history # … containing “/path/” anywhere
গত এক আমি ডিফল্ট বিভেদক পরিবর্তিত /
করতে _
যেমন অনুসন্ধান শব্দ ভিতরে ব্যবহৃত হচ্ছে, আসলে এই সমান sed -i '/\/path\//d' .bash_history
। যদি কমান্ডটি কেবলমাত্র সেই লাইনগুলিকে আউটপুট করে দেয় যা আপনি মুছে ফেলতে চান -i
বিকল্পটি যোগ করতে এবং মুছে ফেলাতে পরিবর্তন !d
করতে d
:
# delete every line…
sed -i '/^exit$/d' .bash_history # … which is just “exit”
sed -i '/^history/d' .bash_history # … beginning with “history”
sed -i '/>>log$/d' .bash_history # … ending with “>>log”
sed -i '\_/path/_d' .bash_history # … containing “/path/” anywhere