मेरे इतिहास में वही कमान बार-बार सूचीबद्ध होती है। इससे कैसे बचा जा सकता है? मुझे पता है कि यह संभव है 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