একাধিকবার আমি দুর্ঘটনাক্রমে বেশ কয়েকটি কমান্ড চালিয়েছি এবং আমার বাশ ইতিহাসকে দূষিত করেছি। আমার বাশের ইতিহাস সংরক্ষণ না করে আমি কীভাবে আমার টার্মিনালটি বন্ধ করব? আমি ফেডোরা ব্যবহার করছি।
একাধিকবার আমি দুর্ঘটনাক্রমে বেশ কয়েকটি কমান্ড চালিয়েছি এবং আমার বাশ ইতিহাসকে দূষিত করেছি। আমার বাশের ইতিহাস সংরক্ষণ না করে আমি কীভাবে আমার টার্মিনালটি বন্ধ করব? আমি ফেডোরা ব্যবহার করছি।
উত্তর:
আপনার শেলের ইতিহাস HISTFILE
ভেরিয়েবল দ্বারা নির্দেশিত ফাইলে সংরক্ষণ করা হয় । তাই:
unset HISTFILE
এটি zsh এর ক্ষেত্রেও প্রযোজ্য, তবে ksh নয় যা $HISTFILE
শেলটি শুরু হওয়ার সময় নির্দেশিত ফাইলে সংরক্ষণ করে (এবং বিপরীতভাবে, আপনি শেল শুরু করার পরে আপনার ইতিহাস কেএসএসে সংরক্ষণ করার সিদ্ধান্ত নেন)।
সংক্ষিপ্ত উত্তর:
প্রম্পটে এটি টাইপ করুন:
$ kill -9 $$
এটি শেলটি সিগন্যালটিকে ফাঁদে ফেলা, ইতিহাস সংরক্ষণ করা, চালানো , বন্ধ করা চাকরির বিষয়ে সতর্কতা বা সেই ভাল স্টাফগুলির কোনওরকম কিছু করতে সক্ষম না করে এখনই আপনার শেলটিকে তত্ক্ষণাত হত্যা করবে ~/.bash_logout
।
দীর্ঘ উত্তর:
দ্রষ্টব্য: এই অপশন আছে না পারস্পরিক একচেটিয়া; সেগুলি একবারে ব্যবহার করা যেতে পারে।
বিকল্প 1:
আপনি যদি হিস্ট্রি ফাইলটি তালগোল পাকানোর কথা বলেন তবে আপনি যদি পারফেকশনিস্ট হন, তবে আপনি যা করতে পারেন তা হল HISTIGNORE
রেকর্ড করতে চান না এমন কমান্ডের গ্লোবগুলি অন্তর্ভুক্ত করার জন্য ভেরিয়েবলটি পরিবর্তন করা। উদাহরণস্বরূপ, আপনি যোগ করে HISTIGNORE='ls*:cd*'
আপনার টু ~/.bashrc
তারপর কোন দৃষ্টান্ত ls
এবং cd
আপনার ইতিহাস ফাইল ঢোকানো নেই।
বিকল্প 2:
আপনি যদি কমান্ড-বাই-কমান্ডের ভিত্তিতে কমান্ডগুলি আপনার ইতিহাসের বাইরে চলে যায় তা নিয়ন্ত্রণ করতে চান, আপনি সেট করতে পারেন HISTCONTROL='ignorespace'
যা কোনও স্থান দিয়ে শুরু হওয়া কোনও কমান্ড লাইন বাদ দেবে। ব্যবহার ignoreboth
পুনরাবৃত্তি লাইন বাদ যাবে। তারপরে, কমান্ড দেওয়ার আগে স্পেস বারটি চাপার ফলে এটি আপনার ইতিহাসের ফাইলটিতে প্রদর্শিত হবে না।
বিকল্প 3:
আপনি যদি এটি তৈরি করতে চান যখন আপনি টার্মিনালটি বন্ধ করার সাথে সাথে শেলটি তত্ক্ষণাত প্রস্থান হয়, আপনি trap
সিগন্যালটি টার্মিনাল প্রোগ্রামটি শেলটি প্রেরণ করতে পারেন ( xterm
উদাহরণস্বরূপ প্রেরণ SIGHUP
করে শেলটি প্রস্থান করার জন্য অপেক্ষা করে) এবং ইতিহাস সংরক্ষণ না করে প্রস্থান করতে পারেন এই সংকেত গ্রহণ। এটি আপনার যুক্ত করুন ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
সমস্ত কিছু যখন ব্যর্থ হয়েছে তখন ভয়াবহ পরিস্থিতি ব্যতীত অন্য কোনও কিছুর জন্য ব্যবহার করা ভাল ধারণা ।
আমি অবাক হয়ে দেখেছি যে এর আগে কেউ history -c
তত্ক্ষণাত পরামর্শ দেয়নি exit
। আইআইএনএম (আমি কোনও বিশেষজ্ঞ নই) যা দুর্দান্তভাবে করবে।
history -r
ইতিহাস ফাইলটি পুনরায় পড়বে, তাই সংরক্ষণ একটি অনির্বাচিত হয়ে যায়।
দুটি ফাইলের ভেরিয়েবল রয়েছে যা ব্যাশ ইতিহাসের ফাইলটি নির্ধারণ করতে ব্যবহার করে এবং শেলটি যখন প্রস্থান করে তখন এটিতে কতটি লাইন লিখতে হয়।
আপনি এর যে কোনও একটি দিয়ে আপনার সেশনটির ইতিহাস ফেলে দিতে পারেন (সেশন চলাকালীন সেট করুন যা আপনি নিজের ইতিহাস ফাইল থেকে বাদ দিতে চান):
HISTFILE=/dev/null
অথবা
HISTSIZE=0
ফেডোরার বাশ-এ এই উভয়েরই কাজ সূক্ষ্ম
আপনি কেন আপনার কমান্ডের ইতিহাস সম্পর্কে এত যত্ন করছেন তা নিশ্চিত নন। আপনার যদি প্রায়শই নির্দিষ্ট কমান্ডের প্রয়োজন হয় তবে আপনি যদি তাদের জন্য এলিয়াসগুলি সংজ্ঞায়িত করেন তবে আপনি আরও মজা পেতে পারেন যাতে আপনি তাদের ইতিহাসে সন্ধান না করে দুটি কী-স্ট্রোক দিয়ে ফিরে পেতে পারেন।
এলি ইতিমধ্যেই আপনি যা সেট হয় ব্যাশ জন্য সঠিক উত্তর দিয়েছেন HISTSIZE=0
।
আমি জিএনইউ স্ক্রিনের জন্য এটি করার পদ্ধতিটি যুক্ত করব । Ctrl+A
এরপরে টিপুন (স্ক্রিন এ্যাস্ক ক্রম) :scrollback 0
। এটি স্ক্রোল-ব্যাক ইতিহাস মুছে ফেলবে। এখন আপনি তাত্ক্ষণিকভাবে :scrollback 15000
স্ক্রোল-ব্যাক বাফার আকারটি পুনরায় সেট করতে পারেন ।
screen(1)
?
scrollback=0
।
Ctrl+a H
বা Ctrl+a :clear
ইতিহাস সরাবে না । আপনি প্রয়োজন Ctrl+a :scrollback 0
। আপনি নিজে এটি পরীক্ষা করতে পারেন। একটি নতুন স্ক্রিন সেশন শুরু করুন। এখন একটি cat /etc/passwd
। এখন, উপরের যে কোনওটি করুন - Ctrl+a H
বা Ctrl+a :clear
। Ctrl+a [
উপরের দিকে যেতে আপ ডান দিয়ে একটি ডায়িগের মাধ্যমে স্ক্রিন বাফার থেকে অনুলিপি করার চেষ্টা করুন এবং দেখুন আপনি অনুলিপি করতে কতদূর যেতে পারেন। আপনি যদি একটি Ctrl+a :scrollback
দ্বারা অনুসরণ করে থাকেন তবে clear
আপনি কেবলমাত্র বর্তমান উইন্ডোতে যতদূর দেখতে পাবেন যেহেতু কোনও স্ক্রলব্যাক বাফার হবে না।
set HISTFILE
পরের বার লগ ইন করতে হবে না? (এটি সঠিক বা ভুল হলে কেবল বলুন)