আমার উত্তর পূর্ববর্তী উত্তরের উপর ভিত্তি করে, তবে ক্রমটি উল্টে দেওয়ার সাথে সাথে ইতিহাসের আইটেমগুলি সর্বাধিক সাম্প্রতিক থেকে সাম্প্রতিক সময়ে মুছে ফেলা হবে।
আপনার বর্তমান ইতিহাস পান (আপনি দেখতে চাইছেন এমন লাইনগুলির সংখ্যার সমন্বয় করুন):
history | tail -n 10
এটি আমার মতো কিছু দেয়
1003 25-04-2016 17:54:52 echo "Command 1"
1004 25-04-2016 17:54:54 echo "Command 2"
1005 25-04-2016 17:54:57 echo "Command 3"
1006 25-04-2016 17:54:59 echo "Command 4"
1007 25-04-2016 17:55:01 echo "Command 5"
1008 25-04-2016 17:55:03 echo "Command 6"
1009 25-04-2016 17:55:07 echo "Command 7"
1010 25-04-2016 17:55:09 echo "Command 8"
1011 25-04-2016 17:55:11 echo "Command 9"
1012 25-04-2016 17:55:14 echo "Command 10"
আপনি যে আইটেমগুলি মুছতে চান তার জন্য শুরু এবং শেষের অবস্থানগুলি নির্বাচন করুন। আমি 1006 থেকে 1008 এন্ট্রি মুছতে চলেছি।
for h in $(seq 1006 1008); do history -d 1006; done
এটি history -d
1006-র জন্য কমান্ড তৈরি করবে , তারপরে 1007 1006 হয়ে যায় এবং 1006 মুছে ফেলা হয়, তারপরে 1008 (1007 হয়ে গেছে) এখন 1006 এবং মুছে ফেলা হবে।
আমি যদি ইতিহাস মুছে ফেলতে কমান্ডটি মুছতে চাইতাম তবে এটি কিছুটা জটিল কারণ আপনার বর্তমান সর্বাধিক ইতিহাসের এন্ট্রিটি জানতে হবে।
আপনি এটি দিয়ে পেতে পারেন (আরও ভাল উপায় হতে পারে):
history 1 | awk '{print $1}'
এটি একসাথে রেখে আপনি এটি ব্যবহার করতে পারেন কোনও ব্যাপ্তি মুছতে, এবং ইতিহাস মুছার আদেশটি মুছতে:
for h in $(seq 1006 1008); do history -d 1006; done; history -d $(history 1 | awk '{print $1}')
আপনার এতে যুক্ত করতে একটি ফাংশনে এগুলি সমস্ত গুটিয়ে নিন ~/.bashrc
:
histdel(){
for h in $(seq $1 $2); do
history -d $1
done
history -d $(history 1 | awk '{print $1}')
}
4, 5 এবং 6 (1049-1051) কমান্ড মুছে ফেলা এবং প্রমাণ লুকিয়ে রাখার উদাহরণ:
[18:21:02 jonathag@gb-slo-svb-0221 ~]$ history 11
1046 25-04-2016 18:20:47 echo "Command 1"
1047 25-04-2016 18:20:48 echo "Command 2"
1048 25-04-2016 18:20:50 echo "Command 3"
1049 25-04-2016 18:20:51 echo "Command 4"
1050 25-04-2016 18:20:53 echo "Command 5"
1051 25-04-2016 18:20:54 echo "Command 6"
1052 25-04-2016 18:20:56 echo "Command 7"
1053 25-04-2016 18:20:57 echo "Command 8"
1054 25-04-2016 18:21:00 echo "Command 9"
1055 25-04-2016 18:21:02 echo "Command 10"
1056 25-04-2016 18:21:07 history 11
[18:21:07 jonathag@gb-slo-svb-0221 ~]$ histdel 1049 1051
[18:21:23 jonathag@gb-slo-svb-0221 ~]$ history 8
1046 25-04-2016 18:20:47 echo "Command 1"
1047 25-04-2016 18:20:48 echo "Command 2"
1048 25-04-2016 18:20:50 echo "Command 3"
1049 25-04-2016 18:20:56 echo "Command 7"
1050 25-04-2016 18:20:57 echo "Command 8"
1051 25-04-2016 18:21:00 echo "Command 9"
1052 25-04-2016 18:21:02 echo "Command 10"
1053 25-04-2016 18:21:07 history 11
প্রশ্নটি আসলে ইতিহাস থেকে শেষ 10 টি কমান্ড মুছে ফেলার ছিল, তাই আপনি যদি কিছুটা প্রচেষ্টা সংরক্ষণ করতে চান তবে আপনি অন্য ফাংশনটি ফাংশনটি কল করতে ব্যবহার করতে পারেন histdel
যা আপনার জন্য গণনা করে।
histdeln(){
# Get the current history number
n=$(history 1 | awk '{print $1}')
# Call histdel with the appropriate range
histdel $(( $n - $1 )) $(( $n - 1 ))
}
এই ফাংশনটিতে 1 টি যুক্তি লাগে, মুছতে পূর্ববর্তী ইতিহাসের আইটেমের সংখ্যা। সুতরাং ইতিহাস থেকে শেষ 10 কমান্ড মুছতে কেবল ব্যবহার করুন histdeln 10
।
vi $HISTFILE
এবং আপনি যা চান তা মুছুন।head -n -10
আপনি যদি এটি স্বয়ংক্রিয় করতে হয় ব্যবহার করুন ।