मैं मैक OSX में काम कर रहा हूं, इसलिए मुझे लगता है कि मैं बैश का उपयोग कर रहा हूं ...?
कभी-कभी मैं कुछ ऐसा दर्ज करता हूं जिसे मैं इतिहास में याद नहीं रखना चाहता। मेरे द्वारा इसे कैसे दूर किया जाएगा?
मैं मैक OSX में काम कर रहा हूं, इसलिए मुझे लगता है कि मैं बैश का उपयोग कर रहा हूं ...?
कभी-कभी मैं कुछ ऐसा दर्ज करता हूं जिसे मैं इतिहास में याद नहीं रखना चाहता। मेरे द्वारा इसे कैसे दूर किया जाएगा?
जवाबों:
यदि आप इसे इतिहास में सहेजे बिना एक कमांड चलाना चाहते हैं, तो इसे एक अतिरिक्त स्थान के साथ प्रस्तुत करें
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
इसके लिए आपको ignorespace
या तो काम करने की जरूरत ignoreboth
है HISTCONTROL
। उदाहरण के लिए, भागो
HISTCONTROL=ignorespace
इस सेटिंग को लगातार बनाने के लिए, इसे अपने में रखें .bashrc
।
यदि आप पहले ही कमांड चला चुके हैं, और इसे इतिहास से हटाना चाहते हैं, तो पहले उपयोग करें
history
अपने इतिहास में आदेशों की सूची प्रदर्शित करने के लिए। उस संख्या के बगल में खोजें जिसे आप हटाना चाहते हैं (जैसे 1234) और चलाएं
history -d 1234
इसके अतिरिक्त, यदि आप जिस लाइन को हटाना चाहते हैं, वह पहले ही आपके $ HISTFILE पर लिखी जा चुकी है (जो आमतौर पर तब होती है जब आप किसी सत्र को डिफ़ॉल्ट रूप से समाप्त करते हैं), तो आपको $ HISTFILE पर वापस लिखना होगा, या नया खोलने पर लाइन फिर से दिखाई देगी सत्र:
history -w
history -a
, उस स्थिति में यह पहले से ही सामान्य कॉन्फ़िगरेशन के तहत बाहर निकलने के बजाय इतिहास फ़ाइल में लिखा गया है। विशेष रूप से: mywiki.wooledge.org/BashFAQ/088
history -w
। अन्यथा जब आप बाहर निकलते हैं, तो हटा दी गई रेखा अभी भी है!
history -w
बाद history -d {num}
वास्तव में मुझे क्या चाहिए था - उस महत्वपूर्ण tidbit को उत्तर में जोड़ा जाना चाहिए, अन्यथा एक उपयोगकर्ता सोच सकता है कि वर्तमान शेल से एक अस्थायी हटाना वास्तव में स्थायी है।
history -w
उन प्रविष्टियों के लिए आवश्यक है जो पहले से ही .bash_history
फ़ाइल में लिखी गई हैं । कैसे पुन: पेश करें (जैसे स्टॉक कॉन्फ़िगरेशन के साथ CentOS 7 पर): 1. लॉगिन 2. कमांड दर्ज करें echo foo
3. लॉगआउट 4. लॉगिन फिर से 5. प्रवेश के लिए हटाएं echo foo
6. लॉगआउट 7. फिर से लॉगिन करें: प्रविष्टि अभी भी है। इस आधार पर कि आप अपने बैश इतिहास को कैसे कॉन्फ़िगर करते हैं शायद आप इस मुद्दे को अन्य तरीकों से पुन: पेश कर सकते हैं - अर्थात यदि आप लॉगआउट से पहले इतिहास लेखन को उत्तेजित करते हैं।
अपना सारा इतिहास साफ़ करने के लिए, उपयोग करें
history -c
एक पंक्ति को हटाने के लिए, का उपयोग करें
history -d linenumber
मेरे पास यह है ~/.bashrc
, जो कमांड $ forget
को पिछले कमांड को इतिहास से हटा देता है
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
history -d $( history | tail -n 1 | cut -f 1 -d " " )
सरल नहीं होगा ?
history | tail -n1
है history
आदेश ही है, तो यह है कि नंबर हटाने से गलत प्रविष्टि हो जाता है। हालाँकि, history -d $( history | awk 'END{print $1-1}' )
लाइन का चयन, क्षेत्र का चयन, और घटाव को जोड़ती है।
यदि आप पूरे बैश सत्र को भूलना चाहते हैं, तो आप kill
वर्तमान बैश प्रक्रिया कर सकते हैं। चूंकि वर्तमान शेल का वैरिएबल $$
पकड़ है pid
, आप यह कर सकते हैं:
kill -9 $$
इतिहास को साफ़ करने के बाद आपको परिवर्तनों को लिखना होगा। और अगर आप अपने इतिहास में इतिहास पोंछना नहीं चाहते हैं तो आपको इस तरह से कमांड चलाने की जरूरत है:
history -c && history -w && logout
सौभाग्य।
Adding another point suppose if you want to delete a range of history lines
You can use below script.
Below example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done