कैसे टर्मिनल सत्र कमांड को इतिहास को बैश में सिंक करें?


13

मैंने ~/.bash_historyअपने हालिया आदेशों के लिए टर्मिनल सत्र में खोज करने की कोशिश की है, लेकिन वे वहां नहीं थे। मुझे लगता है कि यह इसलिए है क्योंकि मेरे पास कई टर्मिनल सत्र खुले हैं।

वहाँ एक तरीका है कि मैं सिंक कर सकते हैं (यानी सिंक-पुश या सिंक-राइट-आउट) वर्तमान टर्मिनल सत्र के कमांड इतिहास को bash_history फ़ाइल में (सत्र को बंद किए बिना और उस वातावरण को खोए)?

(यह दूरस्थ रूप से समान होगा कि syncकमांड कुछ सिस्टम पर फाइल-सिस्टम संशोधनों को कैसे संग्रहीत करता है।)

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


मैंने history -a शेल बिल्ड कमांड की कोशिश की है, लेकिन किसी तरह अब मुझे .bash_historyफाइल पर 'अनुमति अस्वीकृत' मिल गई है, उसके बाद।
n611x007

डुप्लीकेट प्रश्न। देखें: unix.stackexchange.com/questions/1288/…
एडुआर्डो लेगिएरो

जवाबों:


19

इस पंक्ति को इसमें जोड़ें .bashrc:

export PROMPT_COMMAND="history -a; history -n"

नया टर्मिनल खोलें और जांचें।

व्याख्या

  • history -a इतिहास फ़ाइल में नई इतिहास लाइनें जोड़ता है।
  • history -nbashसत्र की वर्तमान इतिहास सूची के लिए इतिहास फ़ाइल से पढ़ी गई लाइनों को पढ़ने के लिए कहता है।
  • PROMPT_COMMAND: इस वेरिएबल की सामग्री bashशो प्रॉम्प्ट से पहले नियमित कमांड के रूप में चलाई जाती है । इसलिए हर बार जब आप किसी कमांड history -a; history -nको निष्पादित करते हैं, निष्पादित किया जाता है, और आपका bashइतिहास सिंक किया जाता है।

धन्यवाद! मुझे नहीं पता कि मुझे पहले अनुमति से इनकार क्यों किया गया था, लेकिन नए टर्मिनलों के साथ अब यह उम्मीद के मुताबिक काम कर रहा है! मुझे लगता है कि मुझे आम तौर पर बिना history -aलाइसेंस वाले बैशकेन के साथ टर्मिनल में उपयोग करने में सक्षम होना चाहिए ।
n611x007

जब किसी को इस के प्रदर्शन निहितार्थ के बारे में चिंता करना शुरू करना है? (मैं लो-एंड डिवाइसेस के बारे में सोच रहा हूं, यकीन नहीं होता कि यह कितना बड़ा ओवरहेड है।)
n611x007

1
इसके अलावा, आपके पास पहले से ही एक प्रॉम्प्ट कमांड हो सकती है, इस मामले में इसका उपयोग करना बेहतर हैexport PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
फैबियान

यदि ${PROMPT_COMMAND}खाली है तो यह एक त्रुटि देता है क्योंकि अग्रणी;
बोरिस डेपेन

@ बोरिसडैपेन सही है, लेकिन यह आसानी से ठीक हो जाता हैexport PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"
टीएमएल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.