इसे बदलने के लिए पिछले आदेश (निष्पादन के बिना) को कैसे याद किया जाए?


14

मुझे वह ट्रिक याद नहीं आ रही है जहाँ मुझे इसे चलाने के बिना अंतिम कमांड मिल सकती है:

मान लीजिए कि मैं कमांड तीर कुंजी को दबाते हुए कमांड को एक्सेस करने में सक्षम होना चाहता हूं! 1255 और कमांड को संशोधित करें। तो कमांड को कॉल करने के लिए क्या चाल है, इसे कमांड लाइन में दिखाया जाना चाहिए लेकिन निष्पादित नहीं किया जाता है और बाद में तीर कुंजी के माध्यम से पहुंच योग्य है?

मैंने एक प्रतिध्वनि डालने की कोशिश की, लेकिन फिर मेरे पास कमांड से पहले एक प्रतिध्वनि है, मुझे याद नहीं है कि इसे सही तरीके से कैसे किया जाए।


4
अगर मैं आपके अनुरोध को ठीक से समझूं, तो शायद ": p" के प्रत्यय को "1255: p" के रूप में देखें
Theophrastus

@ थियोफ्रेस्टस हां, बिल्कुल, मैं यह भूल गया था: पी भाग और इसे खोजने के लिए Google में सही कीवर्ड नहीं मिल सकता है ... धन्यवाद दोस्तों।
अर्टुरस एम

जवाबों:


21
!1255:p

ऐसा करेंगे

!क्या इतिहास याद
1255है कि लाइन नंबर
:pप्रिंट है, लेकिन निष्पादित नहीं करता है

फिर आप पिछले (अनएक्सपेक्टेड) ​​कमांड को वापस लाने के लिए अप-एरो का उपयोग कर सकते हैं और आवश्यकतानुसार इसे बदल सकते हैं।

मैं अक्सर इसे hg("इतिहास ग्रीप") के साथ जोड़ती हूं - मेरा पसंदीदा उपनाम।

$ alias hg  # Maybe use hgr instead if you are a Mercurial CLI user.
alias hg='history | tail -200 | grep -i'

यह हाल की इतिहास लाइन पर पाठ की खोज करता है, मामले की परवाह किए बिना और इस तरह उपयोग किया जाता है:

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

$ hg variables
 6153  vi Variables/user-extensions.js 
 6176  vi Variables/user-extensions.js 
 6178  vi Variables/user-extensions.js 
 6190  vi Variables/user-extensions.js 
 6230  hg variables
$ # Notice the difference in case with V and v is ignored
$ !6190:p
vi Variables/user-extensions.js 
$ ["up-arrow"]
$ vi Variables/user-extensions.[now change .js to .html]

मैं hgaअपने पूरे इतिहास को खोजने के लिए ("इतिहास ग्रीप ऑल") को परिभाषित करता हूं:

$ alias hga
alias hga='history | grep -i'

लेकिन मैं इसका ज्यादा उपयोग नहीं करता क्योंकि मेरा इतिहास (जानबूझकर) बहुत बड़ा है और मुझे बहुत अधिक आउटपुट मिलता है जो बाद में मेरे टर्मिनल में वापस पृष्ठों को स्क्रॉल करने को प्रभावित करता है।


2
ध्यान दें कि Mercurial का CLIhg भी है ।
usandfriends

1
अच्छा नोट है। जवाब देने के लिए जोड़ा गया।
माइकल ड्यूरेंट

12

हिटिंग Ctrl+ R(जो कि एमएसीएस रिवर्स-इन्क्रीमेंटल-सर्च की बाइंडिंग है जैसा कि टर्मिनल में @gnp टिप्पणियों में दिया गया है) आपको एक विशिष्ट कमांड के लिए हिस्टरी में खोज करने की अनुमति देता है। कमांड दिखाया जाएगा और निष्पादित करने से पहले संपादित किया जा सकता है। आप कुछ इस तरह देखेंगे:

यहाँ छवि विवरण दर्ज करें

स्रोत


1
धन्यवाद! वास्तव में मेरे सवाल का सीधा जवाब नहीं है, लेकिन मुझे यह नहीं पता था और मुझे यह वास्तव में उपयोगी लगता है। आपका बहुत बहुत धन्यवाद!
अर्तुरस एम

1
यह भी उल्लेखनीय है, Ctrl + R एमएसीएस 'रिवर्स-वृद्धिशील-खोज है। कई इमैक कीबाइंडिंग बहुत सारे GNU टूल्स को काम करते हैं: Ctrl + A, Ctrl + E, Ctrl + K, Ctrl + Y और अन्य।
GnP

@gnp जानकारी के लिए धन्यवाद, मुझे नहीं पता था कि।
हमजा अब्बद

दो मुख्य बातें सीखने के बाद मुझे ctrl-r के साथ आराम करने के लिए एक लंबा समय मिला। 1. जैसा आप टाइप कर रहे हैं आउटपुट को अनदेखा करें। 2. सुनिश्चित करें कि आप अपने इच्छित कमांड के लिए पर्याप्त रूप से टाइप करना जानते हैं
माइकल डुरंट

7

fcआदेश आप क्या चाहते हैं करता है

fc -l <number> उस संख्या के आसपास कमांड इतिहास सूचीबद्ध करेगा

fc <number>उस कमांड लाइन प्रविष्टि को vim(या जो भी आपका डिफ़ॉल्ट संपादक है मुझे लगता है) खुल जाएगा , इसलिए आप इसे संपादित कर सकते हैं, और :wqयह आपको अप एरो के साथ उपलब्ध होगा।


7

बैश Ctl+alt+eमें शेल का विस्तार होता है, इस प्रकार टाइपिंग !1255और फिर इस संयोजन को दबाने से इतिहास प्रविष्टि 1255 की सामग्री के साथ वर्तमान लाइन को प्रतिस्थापित किया जाएगा


मेरे लिए उबंटू पर ऐसा नहीं किया
माइकल डुरंट

@ मिचेल ड्यूरेंट, मैंने सिर्फ 14.04 (कुबंटू) में कोशिश की और यह मेरे लिए काम करता है। यह के man bashरूप में प्रलेखित है shell-expand-line। शायद सूक्ति-टर्मिनल के लिए एक शॉर्टकट सेट है।
अडोनिस

@adonis मैं यह कभी नहीं जानता था, बहुत बहुत धन्यवाद, वास्तव में यह वही करता है जो मैं भी कर रहा था। और वास्तव में मैं इस फ़ंक्शन से अधिक उपयोग पा सकता हूं। बहुत बढ़िया! धन्यवाद!
अर्टुरस एम

4

आप निष्पादित (-l) के बजाय सूची निर्दिष्ट करते हुए fc कमांड का उपयोग करना चाहते हैं

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