क्यों बैश इतिहास को हटाना पर्याप्त नहीं है?


15

मुझे लगता है कि मेरे बैश इतिहास को हटाने के लिए मेरे बैश इतिहास को हटाने के लिए पर्याप्त था, लेकिन कल मेरी बिल्ली मेरे कीबोर्ड के दाईं ओर गड़बड़ कर रही थी और जब मैं अपने कंप्यूटर में वापस आया तो मैंने देखा कि मैंने कुछ महीने पहले टाइप किया था, फिर मैंने शुरू किया पागलों की तरह सभी कुंजी को दबाएं जो इसे ट्रिगर कर सकता है। UPARROW कुंजी को चालू करने से हटाए जाने के बाद भी मेरा bash इतिहास दिखाता है .bash_history।

मैं वास्तविक के लिए अपना बैश इतिहास कैसे हटा सकता हूं?


8
हर बार जब आप एक bash शेल को बंद करते हैं तो .bhhhistory ओवरराइट हो जाता है। इसलिए यदि आप मारना शुरू करते हैं, तो .bash_history को हटाएं और लॉग ऑफ करें, आपने बिल्कुल कुछ भी पूरा नहीं किया है।
शादुर

14
आपकी बिल्ली एक बड़े इनाम की हकदार है। आप बैश का उपयोग कितने समय से कर रहे हैं बिना यह पता चले कि इसमें कमांड-लाइन रिकॉल और संपादन है? क्या आप हर समय या हर चीज़ को स्क्रैच से हर कमांड लाइन को फिर से टाइप करते हैं? यह उपयोग करने के लिए खोल को बहुत अप्रिय बना देगा।
कैस

@ दस साल। अब जब आप कहते हैं कि मैं कमांड्स को दोहराने के लिए उपरोज को दबाता हूं, लेकिन मैंने इसे एक 'शॉर्ट टर्म' मेमोरी की तरह समझा, जो कुछ लाइनों से ज्यादा लंबी नहीं थी। मुझे चेतावनी नहीं दी गई थी कि .bash_history को हटाना इतिहास को नष्ट नहीं करेगा।
बंडल

डिलीट करने से ~/.bash_historyवास्तव में डिलीट हो जाता है ~/.bash_history.... लेकिन (जब तक आप इसे रोकने के लिए कदम नहीं उठाते, जैसे history -cकि लॉगआउट या सेटिंग करने से पहले इन-मेमोरी हिस्ट्री को क्लीयर करना HISTFILE=/dev/nullया unsetइसे इंगेज करना) बैश बस बाहर निकलने पर अपने वर्तमान इतिहास को फिर से सेव करेगा । BTW, HISTSIZEenv var स्मृति में रखने के लिए इतिहास की कितनी पंक्तियाँ HISTFILESIZEबताता है , और सहेजने के लिए इतिहास की अधिकतम पंक्तियों को बताता है। इन दोनों को सेट किया जा सकता है, जैसे, आपका ~/.bashrc। पुनश्च: आपकी बिल्ली आपको एक मूल्यवान सबक सिखाने के लिए 2 पुरस्कार की हकदार है :)
कैस

@ मुझे लगता है कि हटाना .bash_history को बैश इतिहास हटाना चाहिए। यह मुझे सहज लगता है। क्या यह सहज नहीं लगता है इतिहास -c, इतिहास -w, परेशान करने वाले चर .. जो उपयोगकर्ता अनुभव के दृष्टिकोण से पागल हैं।
बंडल

जवाबों:


26

कुछ मामलों में (कुछ बैश संस्करण), एक कर:

$ history -c; history -w

या केवल

$ history -cw

मेमोरी में इतिहास को साफ कर देगा (ऊपर और नीचे तीर के पास सूची के लिए कोई कमांड नहीं होगा) और फिर उस$HISTFILE फाइल को लिखें (यदि $HISTFILEरनिंग बैश उदाहरण द्वारा काट दिया जाता है)।

कभी-कभी पार्टी के लिए चुन नहीं काटना $HISTFILEभी साथ फ़ाइल histappendविकल्प को सेट किए बिना और $HISFILEZIZE0 के लिए सेट।

ऐसे मामलों में, हमेशा विकल्प काम करता है:

history -c; >$HISTFILE

यह मेमोरी में दर्ज कमांड की इतिहास सूची और फाइल करने के लिए पहले से रिकॉर्ड किए गए सभी कमांड को स्पष्ट करता है। यह सुनिश्चित करेगा कि रनिंग शेल का या तो मेमोरी या डिस्क में कोई रिकॉर्डेड हिस्ट्री नहीं है, हालाँकि, बैश के अन्य रनिंग इंस्टेंस (जहां इतिहास सक्रिय है) में $HISTFILEबैश शुरू होने से पहले पढ़ी गई कमांड की पूरी कॉपी हो सकती है (या जब history -rइसे निष्पादित किया जाता है) ।

यदि यह भी आवश्यक है कि वर्तमान सत्र का कुछ और (कोई नया आदेश) इतिहास फ़ाइल में नहीं लिखा जाएगा, तो, unset HISTFILEकिसी भी लॉगिंग को रोक देगा।


1
HISTFILE का संपादन और history -c && history -rकरना आपके वर्तमान इतिहास को मैन्युअल रूप से संशोधित इतिहास से बदल देगा। कुछ मामलों में, यह सभी इतिहास को दूर फेंकने से बेहतर हो सकता है।
मिक्को रेंटालीनें

9

bashस्मृति में एक सत्र का इतिहास होता है जिसे फ़ाइल चर के बाहर निकलने पर HISTFILEफ़ाइल चर पर सेट किया bashजाता है।

यदि आप द्वारा बताई गई फ़ाइल को हटाते हैं , तो उस HISTFILEचर को हटा दें और बाहर निकलें bash, तो वह शेल सत्र किसी भी लगातार इतिहास को नहीं छोड़ेगा।

HISTFILEवेरिएबल को अनसेट करने में असफल लेकिन फ़ाइल को डिलीट करने से लगातार इतिहास खाली हो जाएगा, लेकिन शेल के बाहर निकलने पर वर्तमान सत्र का इतिहास सहेज लिया जाएगा।


3
A history -c; history -wमेमोरी और फाइल हिस्ट्री दोनों को क्लियर करेगा। यदि इतिहास में आगे कोई आदेश नहीं होना चाहिए (ठीक वही नहीं जो IMhO से पूछा गया था) तो हिस्टरमिटर को परेशान करना आवश्यक है।
आइजैक

-1

"मैं वास्तविक के लिए अपना बैश इतिहास कैसे हटा सकता हूं?"

बैश से बाहर निकलें, एक अलग शेल शुरू करें, बैश इतिहास फ़ाइल को हटा दें।

या

लॉगआउट, एक अलग खाते में लॉग इन करें, जिसमें इतिहास फ़ाइल पर लिखने की अनुमति है, इतिहास फ़ाइल को हटा दें।


-2

खोल छोड़ते समय, यह सब एक बार में करें, जैसे

echo "" > ~/.bash_history && history -c && exit

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