फिर से चलाए बिना इतिहास उपयोगिता का उपयोग करके पहले से दर्ज कमांड की प्रतिलिपि कैसे करें?


14

मैं historyपिछली इनपुट कमांड की सूची प्राप्त करने के लिए CentOS पर कमांड का उपयोग करने में सक्षम हूं , हालांकि, अगर मैं कुछ ऐसा करता हूं:, !372इतिहास संदर्भित कमांड को चलाने का प्रयास करेगा।

मुझे वर्तमान कर्सर में दिखने के लिए पिछले रन कमांड की आवश्यकता है। यहाँ एक उदाहरण है:

[dev@home ~]$ previous_command_no_execute!372  

जवाबों:


25

कैसे के बारे में, इसे अपनी कमांड लाइन पर रखें:

$ !372

फिर प्रेस ESCद्वारा पीछा किया CTRL+E। यह वास्तव में इसे चलाने के बिना कमांड लाइन पर ऑटोएक्सपैंड करेगा। (भी लाइन पर सब कुछ फैलता है, env vars सहित)

यह केवल बैश पर काम करता है, जहां तक ​​मैं जानता हूं।


हां, यह सटीक उपाय है।
सेंटोसनोब

1
Zsh में समाधान के लिए, टाइप करने के बाद टैब को हिट करें !372और यह आपके लिए इसका विस्तार करेगा।
रीड

10

आप Ctrlrमूल कमांड उदाहरण से कुछ वर्णों का उपयोग कर सकते हैं और फिर टाइप कर सकते हैं

(reverse-i-search)`/etc': sudo /etc/init.d/apache2 restart

ऊपर मैंने टाइप किया Ctrl-r /etcऔर इसने sudo /etc/init.d/apache2 restartइतिहास से कमांड खींच ली


6

history | grep 372 काम करना चाहिए, है ना?

संपादित करें:

इसके अतिरिक्त आप echo !372 > /dev/clipकमांड डायरेक्टरी को अपने क्लिपबोर्ड में रखना पसंद कर सकते हैं ।


हमेशा मेरे लिए काम किया ...
voretaq7

ऐसा नहीं है कि बस उस विशिष्ट कमांड को पहले ही मिल जाए।
सेंटोसनोब

तब आपके और @ voretaq7 दोनों आपके प्रश्न को गलत समझ रहे हैं। क्या आप शायद थोड़ा और स्पष्ट हो सकते हैं?
एमडीएमरा

@MDMarra मैंने सवाल अपडेट किया है। मुझे आशा है कि यह कुछ और प्रकाश डालेगा।
सेंटोसनोब

@centosnoob आपके अपडेट को देख रहा है, और आपके कंसोल को एक माउस और कॉपी-पेस्ट का समर्थन करता है (और यह इन दिनों बिना कॉपी-पेस्ट की क्षमता के साथ टर्मिनल-स्टाइल कंसोल पर सीधे होना दुर्लभ है ) कॉपी और पेस्ट समाधान वास्तव में कम से कम दर्दनाक है । vi-style कमांड एडिटिंग जैसा कि मैंने अपने उत्तर में बताया, एक और विकल्प है, लेकिन मैं vi zealot हूं और यहां तक ​​कि मैं vi-style कमांड लाइन संपादन का उपयोग नहीं करता ...
voretaq7

4

एमडीएमरा ने आसान तरीका दिया ( history|grepऔर अपने डेस्कटॉप वातावरण का उपयोग करके कॉपी / पेस्ट करें, यह मानते हुए कि आपके पास एक है)। मैं वह प्रदान करूंगा, जिसे मैं कठिन तरीका कहता हूं, जो आपके डेस्कटॉप वातावरण या माउस के होने पर काम करता है ।

मान लें कि आप अपने शेल के रूप में बैश चल रहे हैं:

$ सेट -o vi
$ ESC372k

(अब आप आदेश आप 372 आदेशों पहले भाग गया, लाइन पर होगा, और आप में हो जाएगा viके रूप में यदि आप उपयोग कर रहे थे तुम करोगी शैली आदेश मोड। संपादित करें ex/ vi)


दिलचस्प। यह केवल तभी काम करता है जब आपके पास "सेट -ओ vi" जल्दी चलता हो। हो सकता है कि उसे bash प्रोफाइल या कुछ और करना पड़े।
मैट

यह उन लोगों में से एक है "मैं हमेशा vi का उपयोग करता हूं, क्यों नहीं मैं vash बाइंडिंग का उपयोग bash में लाइनों को संपादित करने के लिए कर रहा हूं" जो आपको एक झटके के साथ महसूस होती हैं। इसकी आदत पड़ने में थोड़ा समय लगता है, फिर Emacs- स्टाइल की बाइंडिंग जो बाकी सभी लोग अजीब और बेकार महसूस करते हैं।
cjc

@ मैट हां - आपको अपने संपादन मोड को vi-स्टाइल संपादन में सेट करना होगा। यह आपके जैसे ही काम करना चाहिएset -o vi , और आपके पूरे इतिहास के लिए काम करना चाहिए (संपादन मोड शेल के कमांड इतिहास और अन्य चीजों के लिए सिर्फ एक इंटरफ़ेस है)।
voretaq7

@cjc मैं अपनी पसंद के संपादक के रूप में vi का उपयोग करता हूं, लेकिन मैं अपनी कमांड लाइन को संपादित करने के लिए vi-style बाइंडिंग का उपयोग नहीं करता (मुझे सिर्फ यह पता है कि मेरे सिर के ऊपर से vi-mode में यह कैसे करना है, लेकिन अन्य लोगों ने पोस्ट किया है एमएसीएस-मोड में समकक्ष जो अधिक अनुकूल हो सकता है :)।
voretaq7

4

सबसे आसान और तेज़ तरीका जो आप चाहते हैं वह है:

!372:p

इसके बाद Enterऔर


0

क्या आप डेस्कटॉप सिस्टम या सर्वर पर हैं?

खोल के साथ मेरे कुबंटू डेस्कटॉप सिस्टम पर यह माउस के साथ हाइलाइटिंग का समर्थन करता है। मैं आमतौर पर केवल माउस के साथ पाठ को उजागर करता हूं और इसे चिपकाने के लिए मध्य माउस बटन पर क्लिक करता हूं। क्या यह आपके लिए काम करेगा?

तो आप कमांड के लिए grep कर सकते हैं। पाठ हाइलाइट करें। इसे मध्य माउस बटन के साथ चिपकाएं, फिर इसे संपादित करें।

एक बेहतर तरीका हो सकता है लेकिन यह मेरे लिए काम करता है।


0

ऑटो पेस्ट करने के लिए कोई कमांड नहीं है, लेकिन आप किसी भी कमांड को एडिट करने से पहले उसे एडिट करने के लिए रिकॉल कर सकते हैं। यह वह हो सकता है जिसे आप ढूंढ रहे हैं, लेकिन आदेश से बाहर निकलने पर निष्पादित होगा यदि आप गर्भपात करना चाहते हैं, तो आपको अपने संपादक से बाहर निकलने से पहले अपने संपादित बफर को साफ करना चाहिए।

fc -e vi 372 372

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