केवल उपसर्गों के साथ चलने वाले कमांड को याद रखने के लिए बैश इतिहास प्राप्त करें!


10

रिक्त स्थान (ओं) के साथ उपसर्ग में टर्मिनल में निष्पादित कमांड कमांड इतिहास फ़ाइल में दर्ज नहीं हैं। लेकिन क्या रिवर्स पाने का एक तरीका है यानी इतिहास को केवल उन लोगों को रिकॉर्ड करना चाहिए जो अंतरिक्ष के साथ उपसर्ग कर रहे हैं?

जवाबों:


12

आप दो चर (HISTIGNORE HISTCONTROL) सेट करके डिफ़ॉल्ट उबंटू सेटिंग्स को उल्टा कर सकते हैं, नीचे दिए गए आदेशों का उपयोग कर सकते हैं:

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredupsइतिहास व्यवहार को केवल डुप्लिकेट लाइनों को अनदेखा करने के लिए बदलता है, न कि किसी स्थान से शुरू होने वाली लाइनों को अनदेखा करना। ( HISTCONTROL=यदि आप डुप्लिकेट रखना चाहते हैं, तो आप HISTCONTROL को खाली स्ट्रिंग (साथ ) भी सेट कर सकते हैं , लेकिन आमतौर पर यही चाहते थे।)

HISTIGNORE='!( *)'इतिहास को हर उस रेखा को अनदेखा करता है जो एक स्थान से शुरू नहीं होती है: ( *)हर पंक्ति एक स्थान के साथ शुरू होती है, लेकिन अग्रणी !मैच को नकार देता है, इसलिए यह सब कुछ से मेल खाता है जो एक स्थान से शुरू नहीं होता है। और इतिहास के पैटर्न से जो कुछ भी मेल खाता है उसे इतिहास द्वारा नजरअंदाज कर दिया जाएगा। (इस बाद वाले विकल्प के लिए आवश्यक है कि बैश को extglobचालू के साथ चलाया जाए shopt -s extglob, लेकिन यह उबंटू की डिफ़ॉल्ट सेटिंग है।)

यदि आप इसे स्थायी बनाना चाहते हैं, तो उपरोक्त दो आदेशों को अपने में रखना न भूलें ~/.bashrc


धन्यवाद, यह वही है जो मैं चाहता था .. परिवर्तनों को बचाया .bashrc.. मुझे ज़रूरत थी कि मैं हर cdएस, lsएस और अन्य रोजमर्रा की आज्ञाओं को रिकॉर्ड करने से रोकने के लिए उपयोग करूं; और उन कुछ आदेशों के लिए जो मुझे इतिहास में चाहिए, मैं अब उपसर्ग का उपयोग कर सकता हूं ..
सटीक

1
@rusty यदि आप केवल कुछ तुच्छ आदेशों को बाहर करना चाहते हैं, तो यह आपके लिए बेहतर हो सकता है यदि आप कुछ ऐसा उपयोग करते हैं HISTIGNORE='ls*:cd*', जो इतिहास को प्रत्येक पंक्ति के साथ शुरू होने वाली उपेक्षा कर देगा lsया cd, आप अन्य आदेशों के साथ उस सूची का विस्तार कर सकते हैं, बस :आज्ञाओं के बीच डाल दें । लेकिन यह मत भूलिए कि कमांड रिकॉल सुविधा जिसे आप "अप एरो की" द्वारा एक्सेस कर सकते हैं, वह भी इस इतिहास का उपयोग करता है, इसलिए यदि आपने कुछ अनदेखा किया है, तो आप उन अनदेखा कमांड को " ऊपर की ओर तीर"।
बाज़

मैं किसी भी एसएसएच कमांड को नजरअंदाज करना चाहता था, लेकिन जैसी आज्ञा ssh-copy-idया नहीं ssh-keygen। में HISTIGNORE, मैंने ssh\ *अपने अन्य उपेक्षित कमांड के साथ " " शामिल किया । स्पेस चार से बचना अनिवार्य प्रतीत होता है।
user38537

2

" रिक्त स्थान (नों) के साथ उपसर्ग टर्मिनल में निष्पादित कमांड कमांड इतिहास फ़ाइल में दर्ज नहीं हैं "

हाँ वे हैं।

टर्मिनल इतिहास


1
यह बैश में ;-) एक सेटिंग है
Rinzwind

कमांड रिक्त स्थान के साथ उपसर्ग करता है। माइक `सुदो apt-get update`
अविनाश राज

आपके HISTCONTROL चर का मूल्य क्या है?
बजे ग्लेन जैकमैन

@AvinashRaj: हाँ, मुझे कमांड "यह शूल रिकॉर्ड नहीं किया जाएगा" देखें, मैंने एक स्थान (कमांड लाइन और इतिहास दोनों में दिखाई देता है) रखा। तो यह उस तरह से काम नहीं करता है। शायद आप इसे (HISTCONTROL के साथ) कॉन्फ़िगर कर सकते हैं; लेकिन यह डिफ़ॉल्ट रूप से ऐसा नहीं है।
MrVaykadji
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.