मेरे इतिहास में वही कमान बार-बार सूचीबद्ध होती है। इससे कैसे बचा जा सकता है? मुझे पता है कि यह संभव है HISTCONTROLलेकिन मुझे सही रास्ता नहीं मिला।
मेरे इतिहास में वही कमान बार-बार सूचीबद्ध होती है। इससे कैसे बचा जा सकता है? मुझे पता है कि यह संभव है HISTCONTROLलेकिन मुझे सही रास्ता नहीं मिला।
जवाबों:
से bashआदमी पेज:
HISTCONTROL
इतिहास सूची में आदेशों को कैसे सहेजा जाता है इसे नियंत्रित करने वाले मूल्यों की एक बृहदान्त्र-पृथक सूची। यदि मानों की सूची में शामिल हैं
ignorespace, तो जो लाइनें अंतरिक्ष चरित्र से शुरू होती हैं, वे इतिहास सूची में सहेजे नहीं जाते हैं।ignoredupsसहेजे न जाने के लिए पिछले इतिहास प्रविष्टि से मेल खाती लाइनों का कारण मान । मानignorebothके लिए आशुलिपि हैignorespaceऔरignoredups। का एक मूल्यerasedupsउस लाइन को सहेजे जाने से पहले इतिहास की सूची से हटाए जाने वाली वर्तमान लाइन से मेल खाते सभी पिछली लाइनों का कारण बनता है। उपरोक्त सूची में किसी भी मूल्य को अनदेखा नहीं किया गया है। यदि HISTCONTROL असंगत है, या एक मान्य मान शामिल नहीं है, तो शेल पार्सर द्वारा पढ़ी गई सभी पंक्तियाँ इतिहास सूची में, HISTIGNORE के मूल्य के अधीन सहेजी जाती हैं। मल्टी-लाइन कंपाउंड कमांड की दूसरी और बाद की लाइनों का परीक्षण नहीं किया जाता है, और इतिहास में HISTCONTROL के मूल्य की परवाह किए बिना जोड़ा जाता है।
तो निम्नलिखित पंक्ति को अपने में रखें ~/.bashrc:
export HISTCONTROL=ignoreboth:erasedups
~/.bash_loginअधिकांश समय अगर .bashrc संशोधित किया गया है कि यह काम करेगा, लेकिन वह ऐसा नहीं है सब समय।
source ~/.bashrc && source ~/.bash_profile
इसे अपने में चिपकाएँ ~/.bashrc:
export HISTCONTROL=ignoredups
आप इसके बजाय उपयोग कर सकते हैं ignoreboth। यह इसे दोनों के लिए शॉर्टहैंड करता है ignorespaces(रिक्त स्थान से शुरू होने वाली कमांड) और ignoredups(डुप्लिकेट)।
ignoredupsजब मैं किसी वेबसाइट से कमांड को कॉपी करता हूं, तो मैं खुद ही पसंद कर लेता हूं क्योंकि सामने वाले स्पेस के साथ कमांड्स को नजरअंदाज करने का डिफॉल्ट व्यवहार मुझे परेशान करता है और यह बच नहीं पाता है क्योंकि मैं गलती से किसी स्पेस में कॉपी हो जाता हूं .... लेकिन प्रत्येक अपने।
ignoredupsसहेजा नहीं जाना चाहिए । यह केवल लगातार समान रेखाओं को हटाता है।
इसे डालने से ~/.bashrcअलग-अलग सत्रों में @ एल्विन का घोल wlell के रूप में लागू होगा
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
स्रोत: लिनक्स: बैश इतिहास: "अनदेखा" और "मिटा" सत्र के दौरान आम इतिहास के साथ संघर्ष की स्थापना
export HISTCONTROLऔर तुम्हारा क्यों नहीं करता है? क्या फर्क पड़ता है? यह मेरे लिए निर्यात के बिना काम कर रहा है, मैं बस उत्सुक हूं
exportसे उप-प्रक्रियाओं के लिए चर उपलब्ध करता है। stackoverflow.com/q/1158091/552621 , आदि के मामले में HISTCONTROL, PROMPT_COMMANDइन चरों का उपयोग शेल द्वारा ही किया जाता है, इसलिए शायद उन्हें निर्यात करना (बच्चों की प्रक्रियाओं के लिए) आवश्यक नहीं है।
export HISTCONTROL=erasedups
हर नए आदेश को रिकॉर्ड करने के लिए मुश्किल है। सबसे पहले आपको ~/.profileया इसके समान जोड़ने की आवश्यकता है
:
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
फिर आपको इसमें जोड़ना होगा ~/.bash_logout:
history -a
history -w