Zshell में एक कमांड को इतिहास में सहेजने से कैसे रोका जाए?


26

बैश में मुझे पता है कि एक कमांड को इतिहास में रखने से पहले एक जगह रखना, क्या zshell के बराबर है?


क्रॉस-से-लिंकिंग (थोड़ा और अधिक शामिल) bash उत्तर: unix.stackexchange.com/questions/6094/…
माइकल शगोरिन

जवाबों:


37

HIST_IGNORE_SPACE विकल्प का उपयोग करें।

setopt HIST_IGNORE_SPACE

आदमी zshoptions

HIST_IGNORE_SPACE

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


काश, मैं OSX पर सभी-टाइप-इन-टाइप-इन-द-टर्मिनल-विंडो-ओपन के लिए ऐसा कर सकता था। जब आपको पता चलता है कि आप गलत पेड़ को काट रहे हैं।
डैन रोसेनस्टार्क 22

2
और फिर, जिन आदेशों को मैं रोकना चाहता था, उनके लिए मैंने उपनामों का इस्तेमाल किया और एक स्थान को उपसर्ग किया: उर्फ ​​जूनियर = "जूनियर"
सागर जौहरी

2
@ यार किल -9 उस शेल (अगर यह लाइन-प्रति-लाइन इतिहास फ़ाइल नहीं लिखता है)
माइकल शगोरिन

1
@MichaelShigorin धन्यवाद! kill -9 $$वर्तमान टर्मिनल सत्र में जारी किए गए सभी आदेशों को इतिहास में संग्रहीत करने से बचने के लिए वास्तव में शानदार है।
जेफरी लेबोव्स्की

2
@CMCDragonkai आप unset HISTFILEकमांड के अपने ब्लॉक से पहले कर सकते हैं। आपको HISTFILEअपने इतिहास में अपने इच्छित कमांड रखने के लिए बाद में रीसेट करने या एक नया शेल खोलने की आवश्यकता होगी ।
चौंसठ गैरेट

2

यदि आप ZSH इतिहास में क्या जोड़ा गया है, इस पर अधिक बारीक नियंत्रण चाहते हैं, तो आप zshaddhistoryफ़ंक्शन को परिभाषित कर सकते हैं .zshrc। निम्नलिखित परिभाषा उपेक्षा करने के लिए एक पैटर्न को परिभाषित करने के लिए एक regex का उपयोग करती है:

function zshaddhistory() {
  emulate -L zsh
  if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
      print -sr -- "${1%%$'\n'}"
      fc -p
  else
      return 1
  fi
}

ध्यान दें कि man zshoptsनीचे से व्यवहार HIST_IGNORE_SPACEअभी भी मौजूद है:

ध्यान दें कि आंतरिक इतिहास में कमांड लाइनिंग तब तक है जब तक कि गायब होने से पहले अगली कमांड दर्ज नहीं की जाती है, आपको लाइन को फिर से उपयोग या संपादित करने की अनुमति देता है।

तो इसका परीक्षण करने के लिए, आपको एक अतिरिक्त हिट करना होगा [Enter]। यह दोनों के आउटपुट से कमांड हटाता है history, और the एरो हिस्ट्री भी।

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