ব্যাশ ইতিহাসে "বিপজ্জনক" কমান্ডগুলি লগ করা রোধ করতে, আমি আমার .bashrc
ফাইলে নিম্নলিখিত লাইনটি যুক্ত করেছি :
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
এটি ভালভাবে কাজ করে, তবে এর একটি পার্শ্ব প্রতিক্রিয়া রয়েছে: আমি কোনও মেশিনে চালিত কমান্ডের সম্পূর্ণ ইতিহাস দেখতে পাচ্ছি না। ধরা যাক আমার কাছে পরীক্ষার জন্য বেশ কয়েকটি মেশিন রয়েছে এবং আমি সমস্ত কমান্ড কার্যকর করা দেখতে সক্ষম হতে চাই। history
মৃত্যুদণ্ডপ্রাপ্ত কমান্ডগুলি প্রদর্শন করতে আমি বাশ অভ্যন্তরীণ ব্যবহার করব এবং সম্ভবত আজকের তারিখের জন্য গ্রেপ:
history | grep Sep-28
আমি যা করতে চাই তা হ'ল "বিপজ্জনক" কমান্ডগুলিকেও লগ করা উচিত, তবে #
লাইনের শুরুতে একটি রেখে দেওয়া, যাতে যদি আমি ইতিহাস থেকে ভুল করে কমান্ডটি কার্যকর করতে পারি তবে কোনও ক্ষতি হবে না।
এটি সম্ভব হলে আমার কোনও ধারণা নেই।
আপডেট এবং স্পষ্টকরণ:
এটি আমার জন্য সমস্যা হবার মূল কারণ হ'ল আমি সাধারণত বেশ কয়েকটি টার্মিনাল থেকে আমার মেশিনের সাথে সংযুক্ত থাকি এবং একটি টার্মিনালে চালিত কোনও কমান্ড তত্ক্ষণাত অন্যান্য টার্মিনালের ইতিহাসে পড়ে read এটি দ্বারা অর্জন করা হয়
PROMPT_COMMAND="history -a; history -c; history -r"
আসুন কল্পনা করুন আমার দুটি টার্মিনাল খোলা আছে। একটিতে আমার কিছু cat /dev/foo > file.out
প্রক্রিয়া চলছে। দ্বিতীয়টিতে, আমি অগ্রগতিটি পরীক্ষা করে দেখছি ls -lAhF
। আমি ls
টিপে Upএবং ENTER(এটি ইতিহাসের শেষ আদেশ) দ্বারা পুনরাবৃত্তি করতে থাকি । প্রথম কমান্ড শেষ হওয়ার সাথে সাথে ইতিহাস থেকে শেষ কমান্ড আর থাকবে না ls
, তবে cat /dev/foo > file.out
। আমি যদি সাবধান না হয়ে থাকি তবে আমি আবার বিড়াল শুরু করব এবং ফাইলআউট ওভাররাইট করব।
আমি যেটি অর্জন করতে চাই তা হ'ল বিড়ালের কমান্ডটি একটি এর আগে থাকবে #
, যাতে এটি কার্যকর হয় না। তবে, আমি এখনও এটি ইতিহাসে দেখতে পাচ্ছি এবং এটিকে মন্তব্য না করে (যদি এটি দীর্ঘ নির্দেশ হয়) পুনরায় ব্যবহার করতে পারি।
watch ls -lAhF
বাwhile sleep 1; do ls -lAhf; done
; ফাইলের আকার দেখার পরিবর্তে, আপনিpv /dev/foo > file.out
( ivarch.com/program/pv.shtml ) ব্যবহার করতে পারেন ।