मैं टर्मिनल इतिहास कैसे साफ़ करूँ?


93

मैं लगभग 2 दिनों के लिए लिनक्स टकसाल 17.1 रेबेका का उपयोग कर रहा हूं और गलती से मेरा पासवर्ड टर्मिनल में टाइप किया गया था जो अब पहले से टाइप किए गए कमांड की इतिहास सूची में प्रदर्शित किया गया है।

मैं टर्मिनल इतिहास को पूरी तरह से साफ़ करना चाहता हूं। मैंने टर्मिनल में निम्नलिखित कमांड का उपयोग करने की कोशिश की है जो मुझे लगा कि इतिहास को हमेशा के लिए साफ़ कर देगा लेकिन वे नहीं करते हैं:

history -c
reset
tput reset

उपरोक्त कमांड "" टर्मिनल से इतिहास को साफ़ कर देंगे, लेकिन जब मैं बाहर निकलता हूं और एक नया ले आता हूं, तो मेरा पिछला इतिहास अभी भी है और सभी को फिर से सूचीबद्ध किया जा सकता है - इतिहास कमांड का उपयोग करके और अपने कीबोर्ड पर यूपी तीर दबाकर। । मैं यह नहीं चाहता कि जब तक मैं अपने इतिहास को पूरी तरह से साफ नहीं कर देता, तब तक मैं इसका उपयोग जारी रखना चाहता हूं।

मैं अपने टर्मिनल इतिहास को पूरी तरह से कैसे साफ़ कर सकता हूं - हमेशा के लिए और नए सिरे से शुरू करूं?

कृपया ध्यान दें: मैं इतिहास को सहेजे बिना टर्मिनल से बाहर नहीं निकलना चाहता, बस इस एक उदाहरण में इसे हमेशा के लिए साफ़ कर दें।


1
sed -i "s/$your_pass//g" ~/.bash_history...
जसोनव्रीयन

3
@jajwwryan अकेले समस्या को हल नहीं करेगा क्योंकि sed कमांड शेल इतिहास में समाप्त हो जाएगा।
गिल्स

1
मैंने @jasonwryan से कोड का उपयोग करने की कोशिश की, लेकिन मुझे मिला: sed: -e अभिव्यक्ति # 1, char 0: कोई पिछली नियमित अभिव्यक्ति नहीं है, जो मुझे लगता है कि मुझे पता है कि क्यों और मुझे इस कारण से एक खोज और कुछ गड़बड़ के साथ आने के लिए नेतृत्व: बिल्ली / dev / बातिल> ~ / .bash_history && इतिहास -c && बाहर निकलें
शम्भाला

1
@ गिल्स: आप सही कह रहे हैं: कमांड के सामने एक जगह होनी चाहिए ...
जेसनव्रीयन

जवाबों:


145

resetया tput resetकेवल टर्मिनल के लिए चीजें करता है। इतिहास पूरी तरह से शेल द्वारा प्रबंधित किया जाता है, जो अप्रभावित रहता है।

history -cवर्तमान खोल में अपने इतिहास को साफ करता है। यदि आपने अभी अपना पासवर्ड टाइप किया है तो यह पर्याप्त (लेकिन ओवरकिल) है और उस शेल को बाहर नहीं निकाला है या अपने इतिहास को स्पष्ट रूप से सहेजा नहीं है।

जब आप बैश से बाहर निकलते हैं, तो इतिहास को इतिहास फ़ाइल में सहेजा जाता है, जो डिफ़ॉल्ट रूप से .bash_historyआपके होम डायरेक्टरी में होता है। अधिक सटीक रूप से, वर्तमान सत्र के दौरान बनाया गया इतिहास फ़ाइल में संलग्न है; पहले से मौजूद प्रविष्टियाँ अप्रभावित हैं। वर्तमान शेल के इतिहास के साथ इतिहास फ़ाइल को अधिलेखित करने के लिए, चलाएं history -w

अपने सभी इतिहास प्रविष्टियों को हटाने के बजाय, आप .bash_historyएक संपादक में खोल सकते हैं और उन पंक्तियों को हटा सकते हैं जिन्हें आप नहीं रखना चाहते हैं। आप यह भी कर सकते हैं कि अंदर, कम आसानी से, historyसभी प्रविष्टियों को प्रदर्शित करने का उपयोग करके , फिर history -dउन प्रविष्टियों को हटाने के लिए जिन्हें आप नहीं चाहते हैं, और अंत history -wमें सहेजने के लिए।

ध्यान दें कि आपने इतिहास फ़ाइल को संपादित करने के बाद भी, यह संभव है कि आपका पासवर्ड अभी भी फ़ाइल के पुराने संस्करण से डिस्क पर मौजूद है। इसे अब फाइलसिस्टम के माध्यम से पुनर्प्राप्त नहीं किया जा सकता है, लेकिन यह सीधे डिस्क को एक्सेस करके इसे खोजने के लिए (लेकिन शायद आसान नहीं) संभव हो सकता है। यदि आप इस पासवर्ड का उपयोग कहीं और करते हैं और आपकी डिस्क चोरी हो जाती है (या किसी को डिस्क तक पहुंच मिलती है), तो यह एक समस्या हो सकती है।


1
मुझे आपका उत्तर पसंद है और स्वीकार करूंगा क्योंकि आपने मुझे बहुत सी बातें बताई हैं जो मुझे नहीं पता थीं कि बहुत उपयोगी हैं। मैं अपना पासवर्ड भी बदल दूंगा!
शंभूला

historyइतिहास लॉग की सामग्री की जाँच करने के लिए पहला प्रकार और आप जिस लाइन नंबर को हटाना चाहते हैं, माना जाता है कि आप इतिहास लॉग में लाइन नंबर 1000 को हटाना चाहते हैं, फिरhistory -d 1000
क्लाड कॉम्बे

अगर मैं .bash_history फ़ाइल को सीधे संशोधित करता हूं, तो इतिहास कमांड अभी भी कमांड दिखाता है क्योंकि वे संशोधन से पहले थे, जब तक कि मैं लॉग आउट / लॉग इन नहीं करता।
Benitok

35

मैंने इतिहास -c की कोशिश की है लेकिन एक बार बाहर निकलने और फिर से खुलने के बाद इतिहास वापस आ जाता है। इसने मेरी मदद की।

cat /dev/null > ~/.bash_history && history -c && exit

यह इतिहास फ़ाइल के साथ-साथ वर्तमान सत्र में इतिहास को सहेजे गए इतिहास को साफ़ करता है (ताकि bashबाहर निकलने पर इसे फ़ाइल में सहेजा न जाए )। यह तब शेल से बाहर निकलता है। अगले शेल सत्र का कोई इतिहास नहीं होगा।


18

अपने सभी इतिहास प्रविष्टियों को हटाने के बजाय, अपने टर्मिनल में ये कमांड टाइप करें:

  1. history -c (डिलीट हिस्ट्री के लिए)
  2. history -w (इतिहास बचाओ)

यह zsh के साथ पर्याप्त नहीं होगा यदि inc_append_historyया share_historyविकल्प सेट है।
गाथा

5

क्योंकि यहां एक सुरक्षा समस्या है, इसलिए आपको इतिहास फ़ाइल को सुरक्षित रूप से हटाने पर विचार करना चाहिए।

$ shred -u ~/.bash_history && touch ~/.bash_history

3

एक ही समस्या के साथ सामना करने वाले एक नवजात के रूप में मैंने इतिहास फ़ाइल को हटाने और पुनः प्राप्त करने के बजाय बल्कि क्रूर अभियान का सहारा लिया: -

rm .bash_history
touch .bash_history

इसने मेरे लिए किसी भी अप्रिय दुष्प्रभाव को जन्म दिए बिना काम किया, जिससे मैं परिचित हूं।


3

प्रकार: history -c; rm ~/.bash_history

history -cआपके वर्तमान सत्र के इतिहास को rm ~/.bash_historyसाफ़ करता है , आपके दीर्घकालिक इतिहास को history -c; rm ~/.bash_historyसाफ़ करता है , इसलिए दोनों को साफ़ करता है।


स्पष्टीकरण से ओपी को बेहतर तरीके से समझने में मदद मिलेगी।
मोंगरेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.