इतिहास रचा


15

Gui मोड में, जब किसी उपयोगकर्ता के पास एक से अधिक टर्मिनल खुले होते हैं, तो टर्मिनल उस उपयोगकर्ता की इतिहास फ़ाइल को कैसे फिर से लिखते हैं? कारण मैं पूछ रहा हूं क्योंकि, यह काफी संभव है कि प्रत्येक टर्मिनलों में उपयोगकर्ता विभिन्न कमांडों को निष्पादित करता है। तो, क्या इतिहास की फाइल सभी टर्मिनलों से कमांड को बचाती है या केवल पहले एक से खोला जाना है? या इस तरह की स्थिति से निपटने के लिए कुछ अन्य तरह की स्कीम बनाई गई है?

जवाबों:


11

यह पूरी तरह से इस बात पर निर्भर करता है कि शेल इसे कैसे संभालता है

bashडिफ़ॉल्ट रूप से प्रत्येक शेल के स्थानीय इतिहास के साथ इतिहास फ़ाइल को अधिलेखित कर देगा क्योंकि यह बाहर निकलता है, इसलिए जीत से बाहर निकलने के लिए अंतिम शेल। histappendविकल्प यह मास्टर इतिहास के बजाय संलग्न करने के लिए कारण होगा ( shopt -s histappend)।

zsh डिफ़ॉल्ट रूप से ऐसा ही होता है, और इससे निपटने के लिए कुछ विकल्प हैं:

  • appendhistory - प्रत्येक शेल का इतिहास मास्टर इतिहास फ़ाइल में जोड़ा जाता है क्योंकि शेल बाहर निकलता है
  • incappendhistory - मास्टर इतिहास फ़ाइल को हर बार अपडेट किया जाता है जब तक कि किसी भी शेल में एक पंक्ति निष्पादित नहीं होती है, बजाय उस शेल के बाहर आने तक प्रतीक्षा करने के लिए
  • sharehistory- जैसे incappendhistory, लेकिन मास्टर इतिहास फ़ाइल से सभी चल रहे गोले में परिवर्तन को भी खींचता है, इसलिए आप एक शेल में एक कमांड चला सकते हैं और फिर Upदूसरे शेल में मार सकते हैं और इसे देख सकते हैं

अब मुझे बताएं कि बाश प्लीज में ऐसा कैसे किया जाए?)
tante

1
@ कांटे shopt -s histappendकाम नहीं करते?
माइकल Mrozek

0

मुझे मूल रूप से ओ'रिली "यूनिक्स पावर टूल्स" पुस्तक से यह विचार मिला।

मेरे .profileसेट में:

export HISTFILE=$HOME/.sh_hist.$$

जब भी मेरा .profileपढ़ा जाता है, मुझे अपने सत्र के पीआईडी ​​के साथ एक नई इतिहास फ़ाइल मिलती है। यदि मेरे पास कई लॉगिन हैं, तो प्रत्येक लॉगिन को एक अद्वितीय इतिहास फ़ाइल मिलती है। में काम करता है kshऔर bash

यदि आप X सत्र में नए टर्मिनल खोल रहे हैं, तो वे आमतौर पर लॉगिन गोले नहीं हैं, लेकिन आप उन्हें लॉगिन गोले के रूप में कार्य करने के लिए कॉन्फ़िगर कर सकते हैं। उदाहरण के लिए, एक लॉगिन शेल के रूप में rxvt +lsशुरू होगा rxvt। जो भी टर्मिनल आप उपयोग कर रहे हैं उसके लिए डॉक्स की जाँच करें।

इसके अलावा, जब तक आप साफ करने के लिए एक फ़ाइल .logoutया .bash_logout(या कुछ अन्य साधनों) का उपयोग नहीं कर रहे हैं , आपके पास अंततः .sh_histफाइलों का एक बोझ होगा ।


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