मैं संपादित करने के लिए एक गिने हुए इतिहास कमांड को कैसे याद कर सकता हूं?


17

मैं अक्सर परिवर्तनों के साथ खोज करता हूं history | grep 'string'

मुझे अपने इतिहास में कमांड की एक सूची मिलती है, साथ में इतिहास पंक्ति संख्या), उदाहरण के लिए

history | grep 'git'

  755  git status
 1535  git push origin master
 1570  git merge origin/one-146
 1667  git reset --hard origin/master

मैं अब एक !nnnउदाहरण के साथ एक आदेश को याद कर सकता हूं और निष्पादित कर सकता हूं :

!755
git status
# On branch master
nothing to commit, working directory clean

मेरा सवाल यह है: मैं एक गिने हुए इतिहास कमांड को कैसे याद रख सकता हूं और संपादन के लिए कमांड लाइन पर बने रह सकता हूं और इसे the जैसा है ’, ठीक वैसे ही निष्पादित नहीं! करता है, ताकि मैं कुछ चीजों को बदल सकता हूं जो कि रिटर्न की अध्यक्षता कर रहे हैं?

जवाबों:


12

मैंने इसके बाद से एक और तरीका अपनाया - उपयोग करना ![line-number]:p

यह कथन प्रिंट करता है और इसे इतिहास में जोड़ता है लेकिन वास्तव में इसे निष्पादित नहीं करता है। मैं तब तीर छोड़ता हूं और इसे इच्छानुसार बदलता हूं।

मैं इसे अपने hgउपनाम ( alias hg='history | grep ') के साथ कुछ पाठों के आधार पर इतिहास आदेशों को याद करने के लिए जोड़ती हूं ।

उदाहरण:

$ hg checkout

17140   git checkout README.rdoc
17143   git checkout master
17201   git checkout README.rdoc
17204   git checkout master
17923   git checkout .bashrc
18151   git checkout v311

मैं के अलावा इस का उपयोग ctrl- r(रिवर्स इतिहास खोज), क्योंकि कभी कभी मैं एक दिया स्ट्रिंग के लिए सिर्फ 1 लाइन पर उत्पादन की तुलना में सभी संभावनाओं का एक तत्काल सूची देखने के लिए नहीं बल्कि पसंद करते हैं ctrl- rशो। इसके बाद hg [string]मैं ![line-number]search_stringजैसा hg checkoutकि ऊपर दिखाया गया है।


8

यदि आप histverify विकल्प सेट करते हैं , उदाहरण के लिए

shopt -s histverify

फिर सभी इतिहास प्रतिस्थापन तुरंत निष्पादित किए जाने के बजाय संपादन के लिए लाए जाते हैं। फिर आपको कमांड निष्पादित करने के लिए Enterटाइप !755करने के बाद एक बार के बजाय दो बार प्रेस करने की आवश्यकता होगी ।

आप इतिहास सूची में मनमाने ढंग से पाठ को आगे बढ़ा सकते हैं history -sfc -nlएक विशिष्ट इतिहास प्रविष्टि की सूची के साथ इसे मिलाएं ।

history -s "$(fc -nl 755 755)"

फिर Upयाद करने के लिए दबाएं कि अब नवीनतम इतिहास प्रविष्टि क्या है।


6

आप Ctrl+ का उपयोग करके इतिहास के माध्यम से वापस खोज सकते हैं R। यदि इतिहास प्रविष्टि लंबे समय तक माउस का उपयोग करती है (कीबोर्ड नहीं, जो खोज को रोकती है) वापस संपादित करने के लिए कमांड के भाग को कॉपी और पेस्ट करने के लिए।

जैसा कि @rijsg ने टिप्पणी की, आप खोज को रोकने और संपादन शुरू करने के लिए (बाएं और दाएं) तीर या समकक्ष कुंजियों का उपयोग कर सकते हैं।


2
कोई भी तीर कुंजी या समतुल्य कमांड ( Ctrl-aउदाहरण के लिए) कमांड प्रॉम्प्ट में वर्तमान इतिहास प्रविष्टि को छोड़ने के बिना, उसे निष्पादित किए बिना खोज को रोक देगा। यह @Michael क्या चाहता है पर निर्भर करता है या पर्याप्त नहीं हो सकता है।
nssg 19

2

यदि आप कमांड लाइन पर vi संपादक का उपयोग करने के लिए अपनी .bashrc फाइल को कॉन्फ़िगर करते हैं तो यह कमांड लाइन संपादन को इतना कम जटिल बना देगा।

1, एक बार "सेट -o vi" सक्षम होने के बाद, आप बस "<esc> k" को हिट कर सकते हैं , फिर इतिहास फ़ाइल को ऊपर जाने के लिए "k" को दबाए रखें, जैसे कि यदि आप किसी प्रविष्टि में जाते हैं, तो "j" का उपयोग करें। नीचे जाने के लिए

ध्यान दें: जब vi का उपयोग करते हैं, तो दो मोड होते हैं: कमांड मोड दर्ज करने के लिए कमांड और संपादित करें ESCAPE KEY ONCE को हिट करें, फिर डालने के लिए A, A, i, I, आदि।

Vi में सरल कर्सर पैड: बाएँ = h, नीचे = j, ऊपर = k, दाएं = l http://linuxmeister.net/vi/vi-Summary.jpg

मैंने इस काम को करने के लिए आवश्यक सभी प्रविष्टियाँ जोड़ी हैं: http://linuxmeister.net/Notes/bashrc-simple.html

इसलिए, उपरोक्त बहुत ही उपयोगी जानकारी के आधार पर, मैं "इतिहास" का उपयोग करने में सक्षम था और इसे निष्पादित करने के बिना, "इतिहास" से एक पंक्ति प्राप्त कर सकता था। (इस पोस्ट के लिए धन्यवाद!)

अगर शॉप्ट सूचीबद्ध है और हिस्टिवर्इज़ "ऑफ" है! तुरंत निकाल देंगे,

अगर आपने अपने .bashrc, या टाइप में जोड़ा है: shopt -s histverify , तो a! उदाहरण के लिए, एक संपादन की अनुमति देता है:

history
    1  more .bashrc
    2  history
    3  shopt
    4  . ./.bashrc
    5  shopt | grep hist
    6  history
    7  alias
    8  history
    9  shopt
   10  history

-> ५

जब मैं मारा! 5 निम्नलिखित आदेश प्रकट होता है, लेकिन निष्पादित नहीं करता है

### यदि histverify "चालू" है।

shopt | grep hist
cmdhist         on
histappend      on
histreedit      off
histverify      on
lithist         off

याद रखें कि यूनिक्स का लाभ उठाने के लिए लिनस और रिचर्ड ने लिनक्स और जीएनयू उपकरण बनाए। Vi संपादक (बिल जॉय द्वारा बनाया गया) मास्टर करने के लिए सबसे अच्छा उपकरण है क्योंकि यह यूनिक्स और लिनक्स के हर वितरण पर है।

अन्य सभी कमांड लाइन संपादकों को लोड करने और अतिरिक्त सॉफ़्टवेयर की आवश्यकता है। लिनक्स में जीयूआई (फ़ायरफ़ॉक्स, थंडरबर्ड और ओपनऑफ़िस के अलावा) का उपयोग करना आपके डीजल 4x4 को 1968 वीडब्ल्यू बीटल के साथ रस्सा करने जैसा है ... यह काम करेगा, लेकिन यह सुनिश्चित करता है कि इसका कोई मतलब नहीं है।

याद रखें कि कुरेनिगन ने एक जीयूआई के बारे में क्या कहा, "जो आप देखते हैं वह सब आपको मिलता है"।


-1
echo !number

फिर ऊपर तीर मारा, शब्द हटा दें echoऔर बाकी को संपादित करें; प्रेस निष्पादित करने के लिए दर्ज करें।

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