बैश को कैसे रोके इतिहास


9

मुझे बैश के टर्मिनल इतिहास को स्थापित करने में बहुत परेशानी हो रही है जिस तरह से मैं चाहता हूं। मैं कोई डुप्लिकेट प्रविष्टियाँ नहीं करना चाहूँगा और यदि मैं एक कमांड दर्ज करता हूँ तो मैं चाहता हूँ कि यह बच जाए और डुप्लिकेट ऊपर हटा दिया जाए।

समस्या यह है कि historyकमांड मुझे दिखाता है कि मैं जिस तरह से काम कर रहा हूं वह ठीक है, लेकिन एक बार जब मैं लॉग आउट करता हूं तो फिर से डुप्लिकेट वापस आ जाता है। मेरा मानना ​​है कि यह इतिहास को मौजूदा के साथ जोड़ रहा है। मेरी .bashrcफ़ाइल में ये पंक्तियाँ हैं :

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

मैंने यहां तक ​​कि असहज करने की कोशिश की है shopt, लेकिन यह अभी भी लॉगआउट पर इतिहास को जोड़ता है। मेरा लॉगआउट होने से पहले का इतिहास कैसा हो सकता है?


2
यहाँ एक अच्छी व्याख्या है: unix.stackexchange.com/questions/18212/…
jasonwryan

जवाबों:


7

erasedupsक्या आप डुप्लिकेट के संबंध में चाहते क्या करना चाहिए - बस ध्यान दें कि डुप्लिकेट मिटा इतिहास में एक नई प्रविष्टि जोड़कर के पल में शुरू हो रहा है और यह एक आदेश के सभी पुराने घटनाओं, बस सबसे हाल ही में छोड़ने मिटा देता है कि।


प्रश्न का उत्तर देते हुए " मेरे पास लॉगआउट करने से पहले इतिहास कैसे हो सकता है? "

जिस तरह से मैं इसे देखता हूं, यह केवल एक बार में ही उपयोगी हो सकता है। (अन्यथा आप इतिहास का उपयोग क्यों करेंगे?) आप इसे जारी करके कर सकते हैं

history -c; history -r

यह वर्तमान में स्मृति में रखी गई सभी इतिहास प्रविष्टियों को साफ़ करता है और फिर इतिहास-फ़ाइल से पूरे इतिहास को फिर से पढ़ता है। इसलिए वर्तमान शेल सत्र में लॉग इन करने के बाद से आपके द्वारा जारी की गई सभी कमांड भूल गए हैं। मुझे यह उन परिस्थितियों में काफी उपयोगी लगता है जब मैं बहुत अधिक परीक्षण करता हूं (कई समान आदेश, लेकिन वास्तव में डुप्लिकेट नहीं) और फिर नहीं चाहता कि मेरा इतिहास उस पर आधारित हो - इसलिए मेरे पास इसके लिए एक उपनाम है .bashrc:

alias hrr='history -c; history -r'

( hrr"इतिहास फिर से पढ़ें" के रूप में याद किया जाना चाहिए)।

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