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


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.