बैश इतिहास में संग्रहीत होने से कुछ आदेशों को छोड़कर


31

क्या बैश इतिहास में संग्रहीत होने से rm -rf, जैसे आदेशों को बाहर करने का कोई तरीका है svn revert? वास्तव में, गलती से, मैंने उन्हें कई बार जारी किया है, भले ही मेरे पास करने का कोई इरादा नहीं है, सिर्फ इसलिए कि मैं जल्दी से चीजें कर रहा हूं और यह हुआ। इसलिए मैंने अब तक बहुत सारे काम खो दिए हैं।


जवाबों:


53

आप चाहते हो सकता है $HISTIGNORE: "एक औपनिवेशिक-पृथक-पृथक सूची पैटर्न का उपयोग यह तय करने के लिए किया जाता है कि कौन सी कमांड लाइनें इतिहास सूची में सहेजी जानी चाहिए।" आपके ~ / .bashrc में इस लाइन को काम करना चाहिए:

HISTIGNORE='rm *:svn revert*'

साथ ही, आप इसे इतिहास से बाहर करने के लिए कमांड की शुरुआत में एक स्थान जोड़ सकते हैं। यह तब तक काम करता है जब तक $HISTCONTROLइसमें ignorespaceया ignorebothजो कि मेरे द्वारा उपयोग किए गए किसी भी डिस्ट्रो पर डिफ़ॉल्ट है।


4
अंतरिक्ष यह है कि मैंने इसे हमेशा कैसे किया है।
रोब

मैं गलती से अतिरिक्त में प्रवेश करता था y, आखिरकार cp(उर्फ cp -i) खत्म हो गया। तो मैं के yरूप में aliased alias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'... लेकिन HISTIGNOREयह देखने में बेहतर तरीका है। :) धन्यवाद।
ऐशसेन

2
बस अधिक स्पष्ट होने के लिए: आप रिक्त स्थान से शुरू होने वाले आदेशों को अनदेखा करने के export HISTCONTROL="ignorespace"लिए अपने में जोड़ सकते हैं ~/.bashrc
इदान फेल्डमैन

@AidanFeldman macOS पर डिफ़ॉल्ट नहीं है
akauppi

ध्यान दें: जब हम कमांडलाइन में टाइप करते हैं तो जगह को शामिल किया जाना चाहिए न कि हिस्टॉराइड में।
गायन वीरकुट्टी

6

हालांकि ओपी के सवाल से थोड़ा अलग है, जब मैं जानबूझकर बैश इतिहास में संग्रहीत होने की आज्ञा नहीं चाहता, तो मैं उन्हें एक स्थान के साथ उपसर्ग करता हूं। उबंटू और इसके वेरिएंट में काम करता है, सुनिश्चित नहीं है कि यह सभी प्रणालियों पर काम करता है।


6
पर निर्भर करता है $HISTCONTROL(मेरा जवाब देखें)।
l0b0

@ l0b0 सही, इशारा करने के लिए धन्यवाद।
k4rtik

1

मैं आमतौर पर अपने बैश-उदाहरण को मारता हूं जब मैंने ऐसे काम किए हैं जो मुझे इतिहास में नहीं चाहिए।

kill -9 $$

$$ वर्तमान प्रक्रिया का प्रतिनिधित्व करता है - जब आप इसे शेल से चलाते हैं तो बैश करें। आप $ BASHPID का उपयोग कर सकते हैं, लेकिन यह अधिक टाइपिंग है :-)


2
कुछ बैश सेटिंग्स ( इस तरह ) प्रत्येक कमांड के बाद इतिहास को बचाएंगे, और उस स्थिति में यह काम नहीं करेगा।
l0b0

1
मैं ऐसा करता था। लेकिन सेटिंग HISTFILE=/dev/nullएक बेहतर विकल्प है।
ऐशसेन

बस HISTFILE=बैश और ksh दोनों में काम करता है।
kubanczyk

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