यदि आप एक लिनक्स कमांड लाइन उपयोगकर्ता हैं, तो आप इस बात से सहमत होंगे कि ऐसे समय होते हैं जब आप कमांड लाइन इतिहास में रिकॉर्ड किए जाने वाले कुछ कमांड नहीं चाहते हैं। इसके लिए कई कारण हो सकते हैं। उदाहरण के लिए, आप अपनी कंपनी में एक निश्चित स्थिति में हैं, और आपके पास कुछ विशेषाधिकार हैं जो आप नहीं चाहते कि दूसरों का दुरुपयोग हो। या, कुछ महत्वपूर्ण आदेश हैं कि आप इतिहास सूची ब्राउज़ करते समय गलती से भागना नहीं चाहते हैं।

लेकिन इतिहास सूची में क्या होता है इसे नियंत्रित करने का कोई तरीका है और क्या नहीं? या, दूसरे शब्दों में, क्या हम लिनक्स कमांड लाइन में एक वेब ब्राउज़र जैसे गुप्त मोड चालू कर सकते हैं? जवाब हां है, और यह सुनिश्चित करने के कई तरीके हैं कि आप वास्तव में क्या चाहते हैं। इस लेख में हम उपलब्ध कुछ लोकप्रिय समाधानों पर चर्चा करेंगे।

नोट : इस आलेख में प्रस्तुत सभी आदेशों का परीक्षण उबंटू पर किया गया है।

विभिन्न तरीके उपलब्ध हैं

यहां पहले दो तरीकों का वर्णन हम पहले से ही हमारे पिछले लेखों में से एक में शामिल किए गए हैं। यदि आप पहले से ही उनके बारे में जानते हैं, तो आप इन पर छोड़ सकते हैं। हालांकि, अगर आपको पता नहीं है, तो आपको सलाह दी जाती है कि वे सावधानीपूर्वक उनके माध्यम से जाएं।

1. कमांड से पहले अंतरिक्ष डालें

हाँ, आप इसे सही ढंग से पढ़ते हैं। कमांड की शुरुआत में एक स्पेस डालें, और इसे खोल से अनदेखा कर दिया जाएगा, जिसका अर्थ है कि कमांड इतिहास में दर्ज नहीं किया जाएगा। हालांकि, एक निर्भरता है - कहा गया समाधान केवल तभी काम करेगा जब हिस्टकंट्रोल पर्यावरण परिवर्तक "अनदेखा" या "अनदेखा" पर सेट हो, जो ज्यादातर मामलों में डिफ़ॉल्ट रूप से होता है।

तो, निम्न की तरह एक आदेश:

 [अंतरिक्ष] गूंज "यह एक शीर्ष रहस्य है" 

यदि आप पहले ही यह आदेश कर चुके हैं तो इतिहास में प्रकट नहीं होंगे:

 निर्यात HISTCONTROL = अनदेखा 

नीचे स्क्रीनशॉट इस व्यवहार का एक उदाहरण है।

चौथे "गूंज" कमांड को इतिहास में दर्ज नहीं किया गया था क्योंकि यह शुरुआत में एक स्थान के साथ चलाया गया था।

2. वर्तमान सत्र के लिए पूरे इतिहास को अक्षम करें

यदि आप किसी सत्र के लिए संपूर्ण इतिहास को अक्षम करना चाहते हैं, तो आप अपने कमांड लाइन कार्य से शुरू करने से पहले HISTSIZE पर्यावरण चर को अनसेट करके आसानी से ऐसा कर सकते हैं। वेरिएबल को अनसेट करने के लिए निम्न आदेश चलाएं:

 निर्यात HISTFILE = 0 

HISTFILE लाइनों (या कमांड) की संख्या है जिसे चल रहे बैश सत्र के लिए इतिहास सूची में संग्रहीत किया जा सकता है। डिफ़ॉल्ट रूप से, इस चर के पास एक सेट मान होता है - उदाहरण के लिए, मेरे मामले में 1000।

इसलिए, उपरोक्त वर्णित आदेश पर्यावरण चर के मान को शून्य पर सेट करेगा, और इसके परिणामस्वरूप इतिहास सूची में कुछ भी संग्रहीत नहीं किया जाएगा जब तक कि आप टर्मिनल बंद न करें। ध्यान रखें कि आप ऊपर तीर कुंजी दबाकर या history कमांड चलाकर पहले रन कमांड को देखने में सक्षम नहीं होंगे।

3. पूरा होने के बाद पूरे इतिहास को मिटा दें

इसे पिछले खंड में उल्लिखित समाधान के विकल्प के रूप में देखा जा सकता है। केवल अंतर यह है कि इस मामले में आप अपने सभी कामों के बाद एक आदेश चलाते हैं। Thh निम्नलिखित प्रश्न में कमांड है:

 इतिहास-सीडब्ल्यू 

जैसा कि पहले से ही उल्लेख किया गया है, इसका उपरोक्त उल्लिखित HISTFILE समाधान के समान प्रभाव होगा।

4. केवल आपके द्वारा किए गए काम के लिए इतिहास बंद करें

जबकि ऊपर वर्णित समाधान (2 और 3) चाल करते हैं, वे पूरे इतिहास को मिटा देते हैं, जो कुछ स्थितियों में अवांछित हो सकता है। ऐसे मामले हो सकते हैं जिनमें आप इतिहास सूची को तब तक बनाए रखना चाहते हैं जब तक आप अपना कमांड लाइन काम शुरू नहीं करते हैं। इस तरह की स्थितियों के लिए आपको अपने काम से शुरू करने से पहले निम्न आदेश चलाने की आवश्यकता है:

 [अंतरिक्ष] सेट + ओ इतिहास 

नोट : [अंतरिक्ष] एक रिक्त स्थान का प्रतिनिधित्व करता है।

उपर्युक्त आदेश इतिहास को अस्थायी रूप से अक्षम कर देगा, जिसका अर्थ यह है कि आप इस आदेश को चलाने के बाद जो भी करते हैं, इतिहास में दर्ज नहीं किया जाएगा, हालांकि उपरोक्त आदेश से पहले निष्पादित सभी सामग्री इतिहास सूची में मौजूद होगी।

इतिहास को पुनः सक्षम करने के लिए, निम्न आदेश चलाएं:

 [अंतरिक्ष] सेट-इतिहास 

यह चीज़ों को फिर से सामान्य में लाता है, जिसका अर्थ यह है कि उपरोक्त आदेश के बाद किए गए किसी भी कमांड लाइन का काम इतिहास में दिखाई देगा।

5. इतिहास से विशिष्ट आदेश हटाएं

अब मान लीजिए कि इतिहास सूची में पहले से ही कुछ आदेश शामिल हैं जिन्हें आप रिकॉर्ड नहीं करना चाहते थे। इस मामले में क्या किया जा सकता है? यह आसान है। आप आगे बढ़ सकते हैं और उन्हें हटा सकते हैं। निम्नलिखित यह है कि इसे कैसे पूरा किया जाए:

 [अंतरिक्ष] इतिहास | grep "कमांड का हिस्सा जिसे आप निकालना चाहते हैं" 

उपर्युक्त आदेश उनमें से प्रत्येक से पहले संख्या [num] के साथ मिलान करने वाले आदेशों (जो इतिहास सूची में हैं) की एक सूची आउटपुट करेगा।

एक बार जब आप जिस आदेश को निकालना चाहते हैं उसे पहचान लेते हैं, तो इतिहास सूची से उस विशेष प्रविष्टि को निकालने के लिए बस निम्न आदेश चलाएं:

 इतिहास-डी [संख्या] 

निम्नलिखित स्क्रीनशॉट इसका एक उदाहरण है।

दूसरा 'echo' कमांड सफलतापूर्वक हटा दिया गया था।

वैकल्पिक रूप से, आप इतिहास सूची के माध्यम से पैदल चलने के लिए बस ऊपर तीर कुंजी दबा सकते हैं, और एक बार टर्मिनल पर आपकी रुचि का आदेश दिखाई देने पर, लाइन को पूरी तरह खाली करने के लिए बस "Ctrl + U" दबाएं, इसे प्रभावी रूप से इसे हटा दें सूची।

निष्कर्ष

ऐसे कई तरीके हैं जिनमें आप अपनी आवश्यकताओं के अनुरूप लिनक्स कमांड लाइन इतिहास में हेरफेर कर सकते हैं। ध्यान रखें, हालांकि, इतिहास से कमांड को छिपाने या हटाने के लिए आमतौर पर यह एक अच्छा अभ्यास नहीं है, हालांकि यह भी गलत नहीं है, लेकिन आपको पता होना चाहिए कि आप क्या कर रहे हैं और इसका क्या असर हो सकता है।