अंतिम कमांड से तर्क के साथ एक कमांड चलाएं


34

कमांड चलाते समय, कभी-कभी आपको अंतिम कमांड से तर्क के साथ कमांड चलाने की आवश्यकता होती है। तुम ऐसा कैसे कर सकते हो?

बेशक, तीर कुंजी और के उपयोग को छोड़कर Delकुंजियाँ: ... DelDelDel... Del<new_command>

जवाबों:


45

उदाहरण के लिए, यदि आप यह कमांड चलाते हैं:

mkdir long_path_here/new_dir

सबसे अधिक संभावना है कि आप हाल ही में बनाई गई निर्देशिका में जाना चाहते हैं। आप इसे अगले "शॉर्टकट" का उपयोग करके कर सकते हैं:

  • cd Esc.- प्रकार cdऔर प्रेस के बाद Escके बाद .(एक ही समय में नहीं)। यदि पिछली कमांड में कोई तर्क नहीं है, तो आपको पिछली कमांड खुद ही मिल जाएगी।
  • cd !*- इस मामले में आपको प्रीविओस कमांड से सभी तर्क मिलेंगे। यदि पिछले आदेश में कोई तर्क नहीं है, तो आपको कुछ भी नहीं मिलेगा।
  • cd Alt+ .- टाइप करें cdऔर प्रेस के बाद ( Altऔर .उसी समय में)। वास्तव में, इस तरह से उपयोग करना और प्रेस करना .(जारी किए बिना Alt) जारी रखना , आपको इतिहास से हर कमांड के लिए अंतिम तर्क मिलेगा। यदि किसी आदेश में कोई तर्क नहीं है, तो आप स्वयं ही आदेश प्राप्त करेंगे।

सामान्य तौर पर: <command> Esc.या <command> !*या <command> Alt+ .


वाह, तुमने मुझे सैकड़ों घंटे बचाया मैं अगले कुछ वर्षों में बर्बाद कर रहा होगा
प्रणव

32

यदि आप पिछले कमांड से सभी तर्क चाहते हैं, या सिर्फ अंतिम तर्क के लिए कुछ शॉर्टकट हैं।

  • सभी तर्कों के लिए: <command> !*
  • केवल अंतिम तर्क के लिए: <command> !$

उदाहरण:

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

यदि आप पिछली कमांड के तर्कों की सूची से एकल तर्क चाहते हैं, तो आप उपयोग कर सकते हैं <command> !!:<argNumber>

उदाहरण:

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/

2
आपको केवल !एकल arg संस्करण में एक की आवश्यकता है , जैसे !:2,। डिफ़ॉल्ट बैश मानते हुए।
बेलाक्वा

3
के !^स्थान पर भी उपयोग कर सकते हैं !:1
धान लैंडौ

7

उल्लेख किया !*और !$एक अच्छी बात है, लेकिन जब आपको थोड़ी सी एडिटिंग पढ़ने की आवश्यकता होती है तो शॉर्टकट मदद करने के लिए आते हैं!

उदाहरण के लिए, अनगिनत के बजाय ... DelDelDel... Delतुम सिर्फ प्रेस कर सकते हैं Ctrl-a(लाइन के शुरू होने से कूद) Alt+d(शब्द के अंत तक हटाना)

अधिक जानकारी के लिए man readlineऔर खोजें Default key bindings


4

nअपने पिछले आदेश से वें तर्क लेने के लिए , Alt+ n+ टाइप करें Alt_। उदाहरण के लिए, इसके बाद:

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

echoइसके बाद टाइप करना Alt2Alt_आपको अगले संकेत पर देगा:

$ echo 2

आपके हिट होने के बाद "स्क्रीनशॉट" Alt2है:

(arg: 2) echo

उत्तराधिकार में पिछले आदेशों Alt_के nवें तर्क को प्राप्त करने के लिए आप कई बार दोहरा सकते हैं ।

एक अन्य उपयोगी विचार उर्फ ​​को परिभाषित करना है r="fc -s"। फिर, आप कमांड प्रतिस्थापन कर सकते हैं:

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