मैं वास्तव में control+r
अपने कमांड इतिहास को पुन: खोज करने के लिए उपयोग करने का आनंद ले रहा हूं । मुझे इसके साथ उपयोग करने के लिए कुछ अच्छे विकल्प मिले हैं:
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
मेरे लिए एकमात्र समस्या यह है कि erasedups
केवल अनुक्रमिक डुप्लिकेट को मिटाता है - ताकि कमांड के इस स्ट्रिंग के साथ:
ls
cd ~
ls
ls
आदेश वास्तव में दो बार दर्ज किया जाएगा। मैंने समय-समय पर w / cron चलाने के बारे में सोचा है:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
यह डुप्लिकेट को निकालना होगा, लेकिन दुर्भाग्य से आदेश संरक्षित नहीं होगा। अगर मुझे sort
पहले फाइल नहीं आती है तो मुझे विश्वास नहीं होता कि मैं uniq
ठीक से काम कर सकता हूँ।
मैं अपने .bash_history में डुप्लिकेट को कैसे हटा सकता हूं, आदेश को संरक्षित कर सकता हूं?
अतिरिक्त श्रेय:
क्या .bash_history
स्क्रिप्ट के माध्यम से फ़ाइल को ओवरराइट करने में कोई समस्या है ? उदाहरण के लिए, यदि आप एक अपाचे लॉग फ़ाइल को हटाते हैं, तो मुझे लगता है कि आपको नोह / रीसेट सिग्नल भेजने की आवश्यकता kill
है, क्योंकि यह फाइल से जुड़ा हुआ है। यदि .bash_history
फ़ाइल के मामले में ऐसा है , तो शायद मैं किसी भी तरह ps
से जांचने के लिए उपयोग कर सकता हूं और सुनिश्चित कर सकता हूं कि फ़िल्टरिंग स्क्रिप्ट चलाने से पहले कोई जुड़े सत्र नहीं हैं?
history
कमांड के सभी विकल्पों के लिए मैन पेज खोजने में विफल रहा हूँ । मुझे कहाँ देखना चाहिए?
ignoredups
बजाय कोशिश करेंerasedups
और देखें कि यह आपके लिए कैसे काम करता है।