बैश चलाने वाला एक लिनक्स टर्मिनल एक बिल्ट-इन इतिहास होता है जिसका उपयोग आप यह ट्रैक करने के लिए कर सकते हैं कि आप हाल ही में क्या कर रहे हैं। अपने बैश सत्र का इतिहास देखने के लिए, बिल्ट-इन कमांड history का उपयोग करें:
$ echo "foo"
foo
$ echo "bar"
bar
$ history
1 echo "foo"
2 echo "bar"
3 history
history कमांड अधिकांश कमांड की तरह आपके फाइलसिस्टम पर एक निष्पादन योग्य फाइल नहीं है, बल्कि बैश का एक फंक्शन है। आप type कमांड का उपयोग करके इसे सत्यापित कर सकते हैं:
$ type history
history is a shell builtin
इतिहास नियंत्रण
आपके शेल इतिहास में लाइनों की ऊपरी सीमा HISTSIZE वेरिएबल द्वारा परिभाषित की जाती है। आप इस वेरिएबल को अपनी .bashrc फाइल में सेट कर सकते हैं। निम्नलिखित आपके इतिहास को 3,000 लाइनों पर सेट करता है, जिसके बाद सबसे पुरानी लाइन को नवीनतम कमांड के लिए जगह बनाने के लिए हटा दिया जाता है, जिसे सूची के नीचे रखा जाता है:
export HISTSIZE=3000
अन्य इतिहास-संबंधी वेरिएबल भी हैं। HISTCONTROL वेरिएबल नियंत्रित करता है कि कौन सा इतिहास संग्रहीत किया जाता है। आप बैश को खाली स्थान से शुरू होने वाले कमांड को बाहर करने के लिए मजबूर कर सकते हैं इसे अपनी .bashrc फाइल में रखकर:
export HISTCONTROL=$HISTCONTROL:ignorespace
अब, यदि आप एक स्पेस से शुरू होने वाला कमांड टाइप करते हैं, तो वह कमांड इतिहास में दर्ज नहीं होगा:
$ echo "hello"
$ mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
1 echo "hello"
2 echo "world"
3 history
आप डुप्लिकेट प्रविष्टियों से भी बच सकते हैं:
export HISTCONTROL=$HISTCONTROL:ignoredups
अब, यदि आप एक के बाद एक दो कमांड टाइप करते हैं, तो केवल एक इतिहास में दिखाई देता है:
$ ls
$ ls
$ ls
$ history
1 ls
2 history
यदि आप दोनों अनदेखा करना पसंद करते हैं, तो आप बस ignoreboth का उपयोग कर सकते हैं:
export HISTCONTROL=$HISTCONTROL:ignoreboth
इतिहास से कमांड हटाएं
कभी-कभी आप गलती करते हैं और अपने शेल में कुछ संवेदनशील टाइप कर देते हैं, या हो सकता है कि आप अपने इतिहास को साफ़ करना चाहते हों ताकि यह आपके द्वारा किसी चीज़ को सही ढंग से काम करने के लिए उठाए गए कदमों को अधिक सटीक रूप से दर्शाए। यदि आप बैश में अपने इतिहास से एक कमांड हटाना चाहते हैं, तो उस आइटम की लाइन संख्या के साथ -d विकल्प का उपयोग करें जिसे आप हटाना चाहते हैं:
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
535 echo "foo"
536 echo "bar"
537 history | tail
$ history -d 536
$ history | tail
535 echo "foo"
536 history | tail
537 history -d 536
538 history | tail
history प्रविष्टियों को जोड़ना बंद करने के लिए, आप कमांड से पहले एक space रख सकते हैं, जब तक आपके HISTCONTROL वातावरण वेरिएबल में ignorespace है:
$ history | tail
535 echo "foo"
536 echo "bar"
$ history -d 536
$ history | tail
535 echo "foo"
आप -c विकल्प के साथ अपने पूरे सत्र इतिहास को साफ़ कर सकते हैं:
$ history -c
$ history
$
इतिहास के सबक
इतिहास में हेरफेर आमतौर पर जितना लगता है उससे कम खतरनाक होता है, खासकर जब आप इसे एक उद्देश्य के साथ क्यूरेट कर रहे हों। उदाहरण के लिए, यदि आप एक जटिल समस्या का दस्तावेजीकरण कर रहे हैं, तो अक्सर अपने सत्र इतिहास का उपयोग करके अपने कमांड रिकॉर्ड करना सबसे अच्छा होता है क्योंकि, उन्हें अपने इतिहास में स्लॉट करके, आप उन्हें चला रहे हैं और इस तरह प्रक्रिया का परीक्षण कर रहे हैं। बिना किए दस्तावेजीकरण अक्सर छोटे चरणों की अनदेखी या मामूली विवरण गलत लिखने की ओर ले जाता है।
अपने इतिहास सत्रों का उपयोग आवश्यकतानुसार करें, और इतिहास पर अपनी शक्ति का बुद्धिमानी से प्रयोग करें। हैप्पी हिस्ट्री हैकिंग!