आप पिछली (n-th?) पिछली कमांड के तर्क को याद करते हैं, जिसे आपने बैश के साथ प्रयोग किया था?


9

अक्सर बार मैं एक ही फाइल पर अलग-अलग कमांड जारी करता हूं। उदाहरण के लिए:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

क्या वर्तमान में पिछली कमांड से तर्कों का पुन: उपयोग करने का एक तरीका है ताकि मुझे इसे फिर से लिखना न पड़े?

जवाबों:


15

alt-.निश्चित रूप से अच्छा है, लेकिन अगर आप पहले से ही पता करने के लिए जो तर्क आप चाहते हैं गिने हो, आप तेजी से किया जा सकता है: !:nहै nपिछला आदेश की वें तर्क।

यह अक्सर जादू की जगह के साथ संयोजन करने में मददगार होता है। इसे सक्षम करने के लिए, अपने .inputrc में रखें Space: magic-space। उस सक्षम के साथ, जब आप अंतरिक्ष के बाद टाइप करते हैं !:2, तो यह आपके हिट में प्रवेश करने के लिए प्रतीक्षा करने के बजाय तुरंत इसके मूल्य में विस्तारित हो जाएगा। आपको गलती से गलत तर्क को हथियाने से बचाता है।


9

बैश में आप शॉर्टकट Alt+ का उपयोग कर सकते हैं .
इसे एक बार मारना, आपको अंतिम तर्क देगा। इसे अधिक मारना आपके अंतिम तर्कों के माध्यम से चक्रित होगा।


4

बैश में, "पिछली कमांड लाइन पर अंतिम शब्द" के लिए डिज़ाइनर है !!$:

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

आप कमांड लाइन के प्रारंभिक भाग को बदलने के लिए "कैरेट सिंटैक्स" का भी उपयोग कर सकते हैं ; यदि आप एक ही फ़ाइल पर कई कमांड निष्पादित करना चाहते हैं तो यह आसान है:

file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`

कई और संभावनाएं हैं; विवरण के लिए बैश (1) मैन पेज में "इतिहास प्रतिस्थापन" देखें।


कि कैरट सिंटैक्स वास्तव में तीर को दबाने और कमांड लाइन को खुद संपादित करने की तुलना में धीमा है ...
बैड

1
!!$!$भी लिखा जा सकता है ।
मिकेल

3

बैश में, आप टाइप किए गए अंतिम कमांड के अंतिम कमांड लाइन तर्क के लिए $ _ का भी उपयोग कर सकते हैं:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

हो जाता है:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_

0

एक अपेक्षाकृत धीमा तरीका पिछली कमांड को याद कर रहा है और पिछली कमांड को नए के साथ बदल रहा है।


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