जब मैं पुन: उपयोग करता हूं और प्रविष्टि को संशोधित करता हूं तो इतिहास को संपादित करने से कैसे रोकें?


20

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

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

तो यह शायद सबसे अच्छा सवाल है: क्या मैं इतिहास को संशोधित करने के लिए कभी भी बता सकता हूं - और यदि हां, तो कैसे?


आप history -pइतिहास फ़ाइल को प्रभावित किए बिना इतिहास विस्तार करने के लिए उपयोग कर सकते हैं । आप history -sनिष्पादन के बिना इतिहास के समान और आकर्षक बनाने के लिए कर सकते हैं । आप HISTIGNORE='start of a command I never want in history.*:command2.*'कुछ आदेशों को इतिहास से बाहर रखने के लिए कर सकते हैं ।
मोकेसर

1
क्या set revert-all-at-newline onआपके द्वारा लिंक किए गए प्रश्न में आपकी समस्या का समाधान नहीं है? क्या आप दिखा सकते हैं कि समस्या को कैसे पुन: पेश करें? ध्यान दें कि आप zshजो चाहते हैं उसके साथ अधिक इनलाइन व्यवहार के लिए भी उपयोग कर सकते हैं।
स्टीफन चेजेलस

@mikeserv मैन पेज को देखते हुए, history -pक्या ऐसा कुछ है जो मुझे हर उस कमांड के लिए करना होगा जिसे मैं पुनः उपयोग करना चाहता हूं - क्या यह सही है? यदि हां, तो यह काफी नहीं है कि मैं क्या देख रहा हूं। जैसा कि मैंने उल्लेख किया है, मैंने ऐसे उदाहरणों का उपयोग किया है जो कभी भी इतिहास को संशोधित नहीं करते हैं जब एक कमांड का पुन: उपयोग और संपादन किया जाता है।
रिचर्ड वाइसमैन

@ स्टीफनचेज़ेलस नहीं, मुझे नहीं लगता revert-all-at-newlineकि मुझे इसकी आवश्यकता है। यदि मैं एक कमांड संपादित करता हूं और इसे रद्द करने के लिए CTRL-C दबाता हूं, तो मैं यह भी नहीं चाहता कि यह इतिहास को प्रभावित करे। मैंने पहले कभी भी बैश को कॉन्फ़िगर करने के लिए इतिहास को संशोधित नहीं करने के लिए कहा था, जो इस कारण का एक हिस्सा है कि मैं भ्रमित हूं कि कभी-कभी एक ताजा इंस्टॉल एक तरह से और कभी-कभी दूसरे तरीके से व्यवहार करता है। वैसे, ऐसे उदाहरण पर, जो इतिहास को कमांड के पुन: उपयोग पर संपादित नहीं करता है, यह bind -V | grep revertदर्शाता है कि revert-all-at-newline'बंद' पर सेट है।
रिचर्ड वाइसमैन

2
वास्तव में यह बहुत कम है bash। यह सब रीडलाइन के बारे में है। readlineलाइब्रेरी के अलग-अलग कार्यान्वयन हैं , और इसकी सेटिंग्स का अपना सेट (उनमें से एक बहुत) और इसकी अपनी कॉन्फ़िगरेशन फ़ाइल भी है। मुझे यकीन नहीं है कि अगर यह एक सेटिंग या बस एक कार्यान्वयन अंतर है, लेकिन आपको रीडलाइन-संबंधित प्रलेखन में खोज करनी चाहिए, न कि बैश।
ओरियन

जवाबों:


9

पता चला revert-all-at-newlineजवाब है। मुझे set revert-all-at-newline onअपनी ~/.inputrcफ़ाइल में शामिल करने की आवश्यकता है , क्योंकि setबैश प्रॉम्प्ट पर कमांड का उपयोग करने का कोई प्रभाव नहीं था। (तब, निश्चित रूप से, मुझे एक नया खोल शुरू करना था।)

इसके अलावा, मैंने पाया है कि ~/.inputrcलोड किया जाता है के बजाय /etc/inputrc अगर मौजूद है, जिसका अर्थ है कि किसी भी चूक उत्तरार्द्ध में परिभाषित किया गया है जब आप बनाने के अब सक्रिय नहीं हैं ~/.inputrc। इसे ठीक करने के लिए, के ~/.inputrcसाथ शुरू करें $include /etc/inputrc

सही दिशा में मुझे इंगित करने के लिए @ स्टीफनचेज़लस को धन्यवाद।


0

~ / .Bashrc में आप जोड़ सकते हैं

shopt -s histappend

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

मैंने बैश मैन पेज खोज लिया है और मुझे संपादन इतिहास के नियम पढ़ने को मिल गए हैं। यह कमांड वर्णनात्मक नाम है, लेकिन मैं आपको इसके अलावा क्या चाहता हूँ इसके लिए कोई विकल्प नहीं दिखता है: redraw-current-line करंट को रिफ्रेश करें लाइन।
जेफ कोलमैन

वहाँ भी एक पलटा-ऑल-एट-न्यूलाइन विकल्प है जो बंद करने के लिए
जेफ कोलमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.