मैं मैक ओएस एक्स टर्मिनल इतिहास को कैसे संपादित करूं?


12

मैं मैक ओएस एक्स में अपने बैश इतिहास को कैसे संपादित करूं? मैंने गलती से उस विंडो में पासवर्ड डाला और अपना पूरा इतिहास नहीं निकालना चाहता।

जवाबों:


14

.bash_historyसंपादक के साथ फाइल को खोलना संपादन का काम है। ऐसे कुछ तरीके हैं जिनसे आप इसे हासिल कर सकते हैं।

  1. में टर्मिनल बस प्रकार vi ~/.bash_historyहै, तो फ़ाइल को संपादित के रूप में आप चाहते हैं, और बचाने के लिए। यह विकल्प मुश्किल हो सकता है, यदि आप vi के लिए उपयोग नहीं किए जाते हैं, तो निश्चित रूप से।
  2. उदाहरण के लिए, इन निर्देशों का पालन ​​करके फ़ाइल को दृश्यमान बनाएं , इसे किसी अन्य फ़ाइल के रूप में खोलें, इसे संशोधित करें और सहेजें।
  3. में टर्मिनल बस प्रकार open ~/.bash_history -a /Applications/TextEdit.app। यह कमांड टेक्स्टएडिट के साथ फाइल को खोलेगी , आप किसी अन्य टेक्स्ट एडिटर को चुन सकते हैं। फ़ाइल को संशोधित करें और सहेजें।

ध्यान देने योग्य होने वाले परिवर्तनों के लिए बस बैश को पुनरारंभ करें।


मुझे "अनुमति अस्वीकृत" हो रही है। जब मैं एक sudo करता हूं, तो मैं सभी कमांड्स को एंटर नहीं कर पाता हूं।
कार्तिक एस

1
@ कर्कट आप कर रहे हैं कि वास्तव में क्या कर रहे हो?
thecafremo

अगर मैं .bash_history की सामग्री को देखता हूं, तो सामग्री एक इतिहास कमांड के आउटपुट से अलग होती है। मैं दोनों को पहचानता हूं, फ़ाइल की सामग्री पुरानी है। यदि कई कमांड विंडो खुली हों तो क्या होगा? वे समान कमांड इतिहास साझा नहीं करते हैं। PS मैंने सत्यापित किया कि मैं बैश का उपयोग कर रहा हूं।
विक्टर एंगेल

1
मुझे लगता है कि मुझे मेरा जवाब मिल गया। ECHO $ ​​HISTFILE एक को संपादित करने के लिए दिखाता है।
विक्टर एंगेल

10

टर्मिनल प्रकार में historyऔर लाइन नंबर नोट करें। अगला कॉल history -d noted-line-number। आप जाँच सकते हैं कि लाइन historyफिर से उपयोग करके हटा दी गई है।


2
यह ZSH के साथ Yosemite पर काम नहीं करता है।
पाउलो ओलिवेरा

सवाल बश का था, ज़श का नहीं। ध्यान से पढ़ें!
01

1
@DmitryDupelov आप सही हैं, परेशान करने के लिए क्षमा करें। वैसे भी, यह भविष्य के पाठकों के लिए एक अनुस्मारक है (जो उस विवरण को भी याद कर सकता है)। मेरी टिप्पणी सही करने के लिए धन्यवाद।
पाउलो ओलिवेरा

2
nano ~/.bash_history

जब तुमने किया, ctrl+x और एक सही उत्तर स्वीकार करने के लिए वापस आ जाओ दोस्त


0

मुझे लगता है कि दिमित्री का जवाब आदर्श है अगर इतिहास को बचाने से पहले किया जाए - डिफ़ॉल्ट रूप से, बचत शेल / टर्मिनल निकास पर होती है।

यदि आपने पहले से ही इतिहास को ~ / .bash_history पर सहेज लिया है, तो मैं Thecafremo के उत्तर को प्राथमिकता देता हूं, लेकिन मैं यह सुनिश्चित करने के लिए टर्मिनल से बाहर निकलने का एक कदम जोड़ने का सुझाव दूंगा कि यह सुनिश्चित करने के लिए कि किसी भी प्रतिबंध के उदाहरण ने इतिहास को लोड नहीं किया है और इसे फिर से बचाएगा। यह विशेष रूप से मुश्किल है यदि आपके पास कई टर्मिनल हैं और किसी भी प्रकार के कमांड-बाय-कमांड इतिहास अपडेट को सक्षम किया है।

पृष्ठभूमि:

  • बैश खोल के एक उदाहरण के भीतर इतिहास को बचाता है
  • बैश इस इतिहास को एक फ़ाइल में लिख सकते हैं, जो आमतौर पर शेल / टर्मिनल से बाहर निकलने पर होता है
  • बैश इतिहास में एक फ़ाइल से पढ़ सकता है, जो आमतौर पर शेल / टर्मिनल खोलने पर होता है
  • डिफ़ॉल्ट व्यवहार को बदलना संभव है ताकि इतिहास जल्द से जल्द प्रचारित हो, जो आपके BAD_TEXT को फ़ाइल और अन्य विंडो में स्थानांतरित कर सके

भले ही आप किस विधि का उपयोग करें, मैं एक कदम जोड़ूंगा: सफलता को सत्यापित करना!

  1. टर्मिनल से बाहर निकलें
  2. टर्मिनल को फिर से खोलें
  3. अपमानजनक पाठ की पुष्टि इतिहास में नहीं है - अधिमानतः एक तरह से जो अतिरिक्त इतिहास नहीं बनाएगा। यही है, नहीं grep BAD_TEXT .bash_history! यह नया आदेश इतिहास में जाएगा। मैं सिर्फ अपने पसंदीदा संपादक में .bash_history को खोलूंगा और BAD_TEXT के भीतर खोज करूंगा।

यह आपको मन की शांति देनी चाहिए कि आपने BAD_TEXT को समाप्त कर दिया है, चाहे आप किसी भी प्रकार के पागल बैश सेटअप का सामना कर सकते हों।

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