Zsh में कमांड इतिहास


61

Zsh कमांड इतिहास पर नज़र कैसे रखता है?

मैं अपने घर निर्देशिका में दो फाइलें देखता हूं: .zhistoryऔर .zsh_history। उनके बीच क्या अंतर है? फाइलों में मेरा सारा इतिहास समाहित है । क्या Zsh उनमे से किसी एक को हमेशा के लिए जोड़ कर रखता है ? क्या इससे इतिहास की खोज बहुत धीमी नहीं होगी?

क्या मैं सुरक्षित रूप से इन फ़ाइलों को किसी अन्य स्थान पर प्रतीकात्मक लिंक बना सकता हूं? (उदाहरण के लिए इतिहास में बदलावों पर नज़र रखने के लिए एक गिट रिपॉजिटरी)


अपने विवरण ~/.zshrcऔर / या /etc/zshrcवहाँ वर्णित विकल्पों के लिए जाँचें zsh.sourceforge.net/Guide/zshguide02.html#l17
— UVV

जवाबों:


78

चर द्वारा दर्शाई गई फ़ाइल में Zsh, इनपुट लाइनों (संभवतः समय की जानकारी के साथ) को संग्रहीत करता है HISTFILE। यह एक पूर्ण फ़ाइल नाम होना चाहिए (अन्यथा यह उस समय जो भी निर्देशिका है उसके सापेक्ष व्याख्या की जाएगी)।

Zsh के लिए कोई अंतर्निहित डिफ़ॉल्ट मान नहीं है HISTFILE। Zsh वितरण नए उपयोगकर्ताओं के लिए एक सेटअप विज़ार्ड के साथ आता है, जिसमें ~/.histfileनिर्मित मूल्य होता है, इसलिए यही zsh उपयोगकर्ताओं को डिफ़ॉल्ट रूप से मिलता है। ओह-माय-ज़श HISTFILE=.zhistoryप्रीसेट के साथ आता है । तो ऐसा लगता है कि आपने डिफ़ॉल्ट सेटअप और ओह-माय-ज़श दोनों के साथ zsh की कोशिश की। .zshrcयह देखने के लिए कि आप वर्तमान में किसका उपयोग कर रहे हैं, यह देखने के लिए अपनी (या फ़ाइल तिथियों की) जाँच करें ।

Zsh फ़ाइल को कैसे खोलता है, और इसलिए यदि यह एक प्रतीकात्मक लिंक है तो क्या होता है, कई विकल्पों पर निर्भर करता है।

  • यदि विकल्पों में से एक append_history(डिफ़ॉल्ट रूप से सेट), inc_append_historyया share_historyसेट किया गया है, या जब इतिहास के साथ स्पष्ट रूप से सहेजा जाता है fc -AI, तो zsh मौजूदा फ़ाइल में संलग्न होता है।
    ध्यान दें कि इन सेटिंग्स के तहत, zsh कभी-कभी फ़ाइल को ओवरराइट कर देता है जैसा कि नीचे दिया गया है ताकि इसे आकार में नीचे ट्रिम किया जा सके।
  • अन्यथा, यदि विकल्प hist_save_by_copyसेट किया गया है (यह डिफ़ॉल्ट रूप से zsh 5.0 के बाद से सेट है, लेकिन 4.2 में मौजूद नहीं है), zsh एक अस्थायी फ़ाइल लिखता है, फिर पूर्ण होने पर इसे स्थानांतरित करता है। इस मामले में, यदि इतिहास फ़ाइल एक प्रतीकात्मक लिंक थी, तो नई फ़ाइल प्रतीकात्मक लिंक को बदल देती है।
  • अन्यथा zsh मौजूदा फ़ाइल को जगह में अधिलेखित कर देता है।

एक प्रतीकात्मक लिंक पर बिंदु zsh के बजाय, HISTFILEजहाँ भी आप इतिहास फ़ाइल होना चाहते हैं, वहां सेट करें।

इतिहास में से कितने लाइनों रखा जाता है चर के माध्यम से कॉन्फ़िगर किया गया है HISTSIZEऔर SAVEHIST। HISTSIZEएक सत्र में रखी गई SAVEHISTलाइनों की अधिकतम संख्या है और इतिहास फ़ाइल में रखी गई लाइनों की अधिकतम संख्या है।

कुछ सब पर बचाया इतिहास पाने के लिए आपको दोनों निर्धारित करने की आवश्यकता HISTFILEहै और SAVEHIST, के रूप में के डिफ़ॉल्ट मान SAVEHIST0. आप को बढ़ाने के लिए चाहते हो सकता है है HISTSIZEके रूप में अच्छी तरह से (zsh 5.0 के रूप में, डिफ़ॉल्ट केवल 30 है)।

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