2012-01-27 20 views
48

मुझे लगता है कि .bash_history खोलते समय इसमें केवल मेरे पिछले सत्र की प्रविष्टियां होती हैं, ऐसा लगता है कि वर्तमान सत्र केवल बाहर निकलने पर जोड़ा गया है। क्या मौजूदा सत्र को सहेजने से रोकने का कोई तरीका है? यहां तक ​​कि क्रैशिंग bash एक विकल्प है यदि कोई जानता है कि ऐसा कैसे करें। मैंने पाया कि मैं kill -9 प्रक्रिया कर सकता हूं, लेकिन अगर कोई बेहतर तरीका है तो मुझे जानना अच्छा लगेगा।वर्तमान बैश सत्र को इतिहास में सहेजें

+2

इसे पूरा करने के लिए एक हैशिश तरीका 'kill -9 $$' का उपयोग करना है। अपने टर्मिनल को सिगकिल भेजकर, इसे इतिहास फ़ाइल में लिखने का मौका नहीं मिलता है। – jordanm

उत्तर

55

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

+3

इससे हिस्टफाइल सामग्री भी निकल जाएगी। –

+1

यह मेरे लिए नहीं है। शायद यह किसी बिंदु पर बदल गया? मैं बैश 4.2 का उपयोग कर रहा हूँ। – FatalError

+13

हां, यह 3.2 के लिए इतिहास को रद्द करता है और 4.2 –

53

अनसेट $HISTFILE चर

$ unset HISTFILE 

तो HISTFILE सेट नहीं है, या यदि इतिहास फ़ाइल unwritable है, इतिहास सहेजा नहीं गया है।
http://www.faqs.org/docs/bashman/bashref_106.html

+0

धन्यवाद, यह बैश संस्करणों के लिए अच्छा है जो पूरे इतिहास को एनक्यू पर केंद्रित करते हैं। – dotancohen

+0

मेरे लिए काम नहीं किया – RSFalcon7

+0

इस बनाम 'इतिहास -आर' का क्या फायदा है, क्योंकि इसके साथ आप लॉग इन करने के बाद से जो कुछ भी कर चुके हैं, वह खो देंगे। लेकिन इसके साथ आप इसे खो देंगे और आप जो भी हो सत्र में करने के लिए _going_। – Pylinux

5

यही करना चाहिए:

HISTFILE= 

सेट नहीं HISTFILE।

+0

धन्यवाद, यह काम करता है और मैं पुराने पुराने बैश के लिए कुछ पुराने सर्वरों पर इसका उपयोग करूंगा। – dotancohen

+0

मेरे लिए काम नहीं किया – RSFalcon7

+0

आप यह भी कोशिश कर सकते हैं: इतिहास को अनसेट करें यदि आप इस सत्र के इतिहास में कुछ भी नहीं चाहते हैं तो यह निश्चित रूप से चाल है। अन्यथा HISTCONTROL के बारे में मेरी टिप्पणी ऊपर देखें। – th3penguinwhisperer

10

history -c के समान एक और विकल्प है, लेकिन यह वर्तमान सत्र से पहले कुछ भी मिटा नहीं देता है।

यह history -r, जो HISTFILE से इतिहास को पुनः लोड करता है, जैसे अगर आप सिर्फ में लॉग इन किया है।

मैं अगर यह काम करता है या किसी बैश संस्करण 4.3.11 करने के लिए पिछले में उपलब्ध है पता नहीं है, लेकिन मुझे लगता है हालांकि यह सूची में शामिल करना उपयोगी होगा।

यहाँ इस आदेश और -c एक के बीच का अंतर दिखा एक उदाहरण है:

[email protected]:~$ # I Just logged in 
[email protected]:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 
4679 2014-08-23 17:15:29 # Previous session 
4680 2014-08-23 17:15:33 # Still the previous session 
4681 2014-08-23 17:15:37 # note the datetime 
4682 2014-08-23 17:15:44 exit 
4683 2014-08-23 17:17:25 # I Just logged in 
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session 
[email protected]:~$ # This is a secret command, so I need to remove the traces of this session 
[email protected]:~$ history -r 
[email protected]:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
6242 2014-08-23 17:15:29 # Previous session 
6243 2014-08-23 17:15:33 # Still the previous session 
6244 2014-08-23 17:15:37 # note the datetime 
6245 2014-08-23 17:15:44 exit 
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
[email protected]:~$ history -C# instead if I issue history -c 
[email protected]:~$ history # everything disappears 
5248 2014-08-23 17:23:13 history # everything disappears 
[email protected]:~$ 
+0

बैश 4.3.39 पर, 'इतिहास -r' इतिहास इतिहास की सामग्री को वर्तमान इतिहास सूची में जोड़ता है। यह नहीं बता सकता कि क्या आपने अपना उत्तर पोस्ट करते समय ऐसा किया था ... इतिहास संख्या आपके आदेशों के बीच बहुत कुछ कूदती है, लेकिन दोहराएं नहीं। – user1902689

+0

क्या आप वाकई उन्हें जोड़ते हैं? बैश 4.3.11 में, संख्याएं आगे बढ़ती हैं क्योंकि काउंटर रीसेट नहीं होता है, लेकिन यह वास्तव में मूल को सामग्री में संलग्न नहीं करता है। दरअसल, अगर आप लॉग आउट करते हैं और लॉग इन करते हैं, तो नंबर वापस उनके मूल स्थिति में जाते हैं। –

4

मेरे लिए निम्नलिखित काम करता है।

export HISTFILE=/dev/null 

ध्यान दें कि इसके सामने एक जगह है। अधिकांश आधुनिक distros इतिहास को बाश करने के लिए किसी स्थान के बाद दर्ज किए गए आदेश नहीं जोड़ेंगे। इससे वह लाइन आपके इतिहास में दिखाई देने से भी रोकेगी।

7

मुझे पता है कि यह एक पुराना धागा है। यदि HISTCONTROL चर सेट कर दिया जाता

तुम सिर्फ विशिष्ट आदेश चाहते हैं बचाया जा नहीं जांच:: बस पूरा करने के लिए इस जोड़ना चाहते थे HISTCONTROL = ignoreboth या HISTCONTROL = ignorespace

हर आदेश है कि एक प्रमुख के साथ शुरू होता अंतरिक्ष में अंतरिक्ष नहीं रखा जाएगा।

बस मेरे 2 सेंट।

+0

बहुत, धन्यवाद पेंगुइन! – dotancohen

+0

यह एक अच्छा है! –

संबंधित मुद्दे