बैश इतिहास
सक्रिय टर्मिनल में जारी किए गए किसी भी नए कमांड .bash_history
को निम्नलिखित कमांड के साथ फाइल में जोड़ा जा सकता है :
history -a
समझने की एकमात्र मुश्किल अवधारणा यह है कि प्रत्येक टर्मिनल की अपनी बैश इतिहास सूची होती है ( .bash_history
जब आप टर्मिनल खोलते हैं तो फ़ाइल से लोड किया जाता है )
यदि आप इस सक्रिय टर्मिनल के जीवनकाल में अन्य टर्मिनलों द्वारा लिखे गए किसी भी नए इतिहास को खींचना चाहते हैं, तो आप .bash_history
फ़ाइल की सामग्री को सक्रिय बैश इतिहास सूची में संलग्न कर सकते हैं।
history -c;history -r
यह वर्तमान इतिहास सूची को साफ़ कर देगा ताकि हमें बार-बार सूची न मिले, और इतिहास फ़ाइल को (अब खाली) सूची में जोड़ें।
उपाय
आप PROMPT_COMMAND
प्रत्येक नए प्रॉम्प्ट के साथ कमांड जारी करने के लिए बैश वेरिएबल का उपयोग कर सकते हैं (हर बार जब आप टर्मिनल में एंटर दबाते हैं)
export PROMPT_COMMAND='history -a'
यह जारी करने के साथ ही प्रत्येक कमांड को इतिहास फ़ाइल में रिकॉर्ड करेगा ।
परिणाम
अब आपके द्वारा खोले गए किसी भी नए टर्मिनल में exit
उन अन्य टर्मिनलों के बिना अन्य टर्मिनलों का इतिहास होगा । यह मेरा पसंदीदा वर्कफ़्लो है।
अधिक परिशुद्धता
मान लीजिए कि (किसी कारण से) आपके पास दो टर्मिनल हैं जो आप एक साथ उपयोग कर रहे हैं और आप चाहते हैं कि इतिहास प्रत्येक नए कमांड के लिए दोनों के बीच प्रतिबिंबित करे।
export PROMPT_COMMAND='history -a;history -c;history -r'
यहाँ मुख्य दोष यह है कि आपको विपरीत टर्मिनल से नवीनतम इतिहास प्राप्त करने के लिए PROMPT_COMMAND को फिर से चलाने के लिए एंटर दबाना पड़ सकता है।
आप देख सकते हैं कि यह अधिक सटीक विकल्प संभवतः ओवरकिल क्यों है, लेकिन यह उस उपयोग के मामले के लिए काम करता है।