इतिहास को कोसने के लिए लाइनों को इंजेक्ट करें


9

डिफ़ॉल्ट बैश से ~/.bash_historyइतिहास के लिए लाइनों को लोड करता है । क्या कस्टम फ़ाइल को भी लोड किया जाना संभव है? मैं उन कमांड युक्त फ़ाइल को इंजेक्ट करना चाहता हूं जिन्हें मैं अक्सर उपयोग करता हूं और उन्हें अंतर्निहित खोज के माध्यम से एक्सेस करता हूं।


2
आमतौर पर लोग अक्सर इस्तेमाल किए जाने वाले आदेशों के लिए उपनाम जोड़ते हैं ...
HBruijn

एक दम बढ़िया। लेकिन ऐसा नहीं है - मैं उन कमांड के लिए उपनाम का उपयोग करता हूं जिन्हें मैं लगातार उपयोग करता हूं लेकिन मेरे पास बहुत सारी कमांड हैं जिनमें बड़ी संख्या में तर्क हैं जिन्हें मैं परिस्थितियों के आधार पर संशोधित करना चाहता हूं।
rgtk

4
आपको किसी प्रकार के फ़ाइल संशोधन को रोकना होगा, जो कि पागल लगता है और काम नहीं कर सकता है। बस अपने लंबे कमांड को एक शेल स्क्रिप्ट बनाते हैं जो तर्कों को स्वीकार करता है और इसे /usr/local/binया कुछ और में छोड़ देता है
वेस्ले

यदि आप उन्हें अक्सर उपयोग करते हैं, तो क्या वे आपके इतिहास में वैसे भी नहीं होंगे?

में कार्यों की घोषणा .bashrc?
मार्क के कोवन

जवाबों:


13

मैं इसे alias h='history|grep'अपने बैश प्रोफाइल में लोड करके सरल रखता हूं।

h commandउदाहरण के लिए मेरा वर्कफ़्लो है :h hpssa

#  h hpssa
  202  05-28-2015 11:54:33  hpssacli
  217  05-28-2015 11:54:33  hpssa -start
  225  05-28-2015 11:54:33  hpssacli -stop
  226  05-28-2015 11:54:33  hpssa -stop
  228  05-28-2015 11:54:33  hpssa -start

अगर मुझे " hpssa -stop" चलाना है , तो मैं बस टाइप करूँगा!226


यह सिर्फ मेरा दृष्टिकोण है, लेकिन शायद आप संशोधित कर सकते हैं कि आप इतिहास की वस्तुओं को कैसे याद कर रहे हैं। मुझे नहीं लगता कि यह वास्तव में इतिहास फ़ाइल में डेटा इंजेक्ट करने के लिए समझ में आता है।


अच्छा चाल, चोरी है कि एक
विम

सुझाव दें कि आप अपने इतिहास में वापस खोज के लिए Ctrl-R पर एक नज़र डाल सकते हैं। अपना दिमाग फूंकने के लिए तैयार रहें ...

2
@CameronKerr इस एक के नीचे दिए गए जवाब पर एक नज़र डालें ( serverfault.com/a/695115/464438 )। इस विशेष मामले में Ctrl + R का उपयोग करने के लिए नकारात्मक पक्ष यह है कि यह आपको संबंधित आदेशों को एक बार में देता है, जबकि ewwhite का। दृष्टिकोण सभी संबंधित आदेशों की एक सूची देता है।
जेनी डी

हालाँकि यह एक बेहतरीन ट्रिक है, लेकिन यह सवाल का बिल्कुल भी जवाब नहीं देता है। मैं यह समझने में विफल हूं कि यह सबसे अधिक मतदान वाला उत्तर कैसे है। मेरा उपयोग यह है कि मेरे पास एक डॉकटर छवि है जो इतिहास से बाहर निकलते समय इसे खो देती है। मैंने सोचा कि अच्छा होगा अगर मैं कमांड लाइन के माध्यम से एक इतिहास फ़ाइल को पारित कर docker run ...
सकूँ

@kumar_harsh को खुश करने के लिए।
इविहिट

7

मैं Ctrl-R( reverse-search-historyरीडलाइन कमांड) पर बहुत भरोसा करता था, जो इतिहास के माध्यम से पिछड़ी हुई खोजों को पहले से प्राप्त लंबे कमांड में पुनः प्राप्त करने के लिए खोज करता है, लेकिन अब मैं उपनाम और शेल स्क्रिप्ट / फ़ंक्शन का उपयोग करना पसंद करता हूं। किसी भी तरह, बैश historyबिलिन कमांड का उपयोग आपके वर्तमान इतिहास में कस्टम कमांड की एक सूची लोड करने के लिए किया जा सकता है।

history -r [filename]

बैश मैन पेज से:

इतिहास फ़ाइल की सामग्री पढ़ें और उन्हें वर्तमान इतिहास सूची में जोड़ें।

स्टार्ट-अप स्वचालन

मैंने बस इस कमांड को अपने आप में अंतिम पंक्ति के रूप में जोड़कर लॉन्च करने की कोशिश की .bashrc। हालाँकि, मेरे कस्टम इतिहास फ़ाइल से कमांड तब उपलब्ध नहीं थे जब मैंने एक नया शेल शुरू किया था। ऐसा लगता है कि खोल इतिहास केवल डिफ़ॉल्ट से भरी हुई है .bash_historyफ़ाइल: के बाद स्टार्ट-अप फ़ाइलें संसाधित किया गया है और बस से पहले शीघ्र इंटरैक्टिव खोल के लिए प्रस्तुत किया है। दुर्भाग्य से, ऐसा लगता है कि इसे स्वचालित करने का एक आसान तरीका नहीं है।


2

जैसा कि @AnthonyGeoghegan ने देखा है, स्टार्टअप फ़ाइलों को संसाधित करने के बाद इतिहास लोड किया जाता है। स्टार्टअप इतिहास में वांछित इतिहास को प्री-लोड करने का एक अलग तरीका प्रदान करता है:

mv .bash_history .bash_history.tmp
cat .extra_hist .bash_history.tmp > .bash_history
# or swap them, to put the extra stuff at the end of the history, for
# quicker ^R access.

ध्यान दें कि यह दृष्टिकोण समय के साथ आपके .bash_history पर आपके विशेष आदेशों की कई प्रतियों के परिणामस्वरूप हो सकता है। आप अपने विशेष कमांड को टिप्पणी लाइनों के साथ लपेट सकते हैं, ताकि आप .bash_history फ़ाइल को भरने के हिस्से के रूप में आसानी से उन्हें ढूंढ सकें और उन्हें हटा सकें। कुछ इस तरह:

cp .extra_hist .bash_history
sed '/: remove from here/,/:remove to here/d' .bash_history >> .bash_history
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.