कैसे वर्तमान में bash कंसोल पर पैरामीटर में टाइप किया जाता है?


23

मैं बस कुछ लाइनों के साथ टाइप कर रहा था:

mv foo/bar/poit/zoid/narf.txt

और अचानक एहसास हुआ, धिक्कार है, मुझे उस पैरामीटर के बड़े हिस्सों को फिर से लिखना होगा

mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt

यहां तक ​​कि tabcompletion के साथ, काफी दर्द। मुझे पता है कि मैं पाठ और मिडिलक्लिक का चयन करके माउस द्वारा पैरामीटर को कॉपी कर सकता हूं, लेकिन यह पर्याप्त अच्छा नहीं है। मैं कीबोर्ड पर बने रहना चाहता हूं।

तो क्या कीबोर्ड का उपयोग करके लाइन के वर्तमान पैरामीटर को कॉपी करने का एक तरीका है?


3
मेरी सलाह आपके सवाल का जवाब नहीं है, लेकिन एक छोटी सी टिप है। अपने उदाहरण के रूप में, आप अगले निर्माण का उपयोग कर सकते हैं: mv foo/bar/poit/zoid/{narf.txt,troz.txt}बजाय ओ.टी. टाइपिंग / दो बार लंबे पते को कॉपी करना।
भीड़

2
@ रश के समाधान से थोड़ा कम mv foo/bar/poit/zoid/{narf,troz}.txt:। यह विशेष रूप से अच्छी तरह से काम करता है अगर हमारे पास कुछ है.../zoid/this_source_file_has_to_be_patched.c{,.orig}
अंसार एग्ज़टरमैन

@Rush क्या आप इसे एक जवाब के रूप में इंगित करते हैं? यह सीधे तौर पर नहीं हो सकता है कि मैंने क्या पूछा, लेकिन फिर, आपका समाधान इस बिंदु पर बहुत अधिक है कि मुझे क्या चाहिए। यह स्वीकृति के टोकन के योग्य है।
k0pernikus

जवाबों:


15

अगर मैंने आगे की योजना बनाई है, तो मैं ब्रेस विस्तार का उपयोग करता हूं । इस मामले में:

mv foo/bar/poit/zoid/{narf,troz}.txt

यहां डिफ़ॉल्ट readlineकीबोर्ड शॉर्टकट का उपयोग करते हुए एक और तरीका है :

  • mv foo/bar/poit/soid/narf.txt: प्रारंभ
  • Ctrl- w: unix-word-ruboutहटानाfoo/bar/poit/soid/narf.txt
  • Ctrl- y, Space, Ctrl- y: yank, अंतरिक्ष, yankफिर से प्राप्त करने के लिएmv foo/bar/poit/soid/narf.txt foo/bar/poit/soid/narf.txt
  • Meta- backspace, Meta- backspace: backward-kill-wordअंतिम को हटाने के लिए दो बारnarf.txt
  • troz.txt: पूंछ वाला भाग टाइप करें जो अलग हो

यदि आप bashशेल का उपयोग करते हुए किसी भी गैर-तुच्छ राशि का समय बिताते हैं , तो मैं समय-समय पर डिफ़ॉल्ट शॉर्टकटों की एक सूची के माध्यम से पढ़ने और कुछ को चुनने की सलाह देता हूं जो सीखने और अपनी दिनचर्या में शामिल करने के लिए उपयोगी लगते हैं। मैनुअल का अध्याय 8bash शुरू करने के लिए एक अच्छी जगह है। शॉर्टकट के बारे में जानना आपकी कार्यक्षमता को बढ़ा सकता है।


साफ! मेरे मामले में मुझे मेटा + बैकस्पेस के बजाय Alt + Backspace प्रेस करना पड़ा।
k0pernikus

3
@ k0pernikus अधिकांश कीबोर्ड पर हां, Alt कुंजी मेटा कुंजी है।
jw013

1
रीपिटिंग को बचाने के लिए .txt, आप Ctrl + Left (या कॉल करने वाला कोई भी शॉर्टकट backward-word) दबा सकते हैं , फिर एक वर्ण छोड़ दें, फिर Alt + Backspace और प्रकार troz
wjandrea

24

इतिहास विस्तार वास्तव में वर्तमान कमांडर के साथ-साथ ईवेंट डिज़ाइनर का उपयोग करके काम करता है !#। अंतिम तर्क के लिए शब्द डिज़ाइनर के साथ इसे मिलाएं - $- आप बस टाइप किए गए पैरामीटर को प्राप्त करने के लिए। और आप इस पर सभी नियमित संशोधक का उपयोग कर सकते हैं, इसलिए यदि, उदाहरण के लिए, आप एक फ़ाइल का नाम दूर की निर्देशिका में रख रहे हैं, तो आप बस टाइप कर सकते हैं:

mv path/you/do/not/want/to/type/twice/oldname !#$:h/newname

बहुत उपयोगी! यह विशेष रूप से अच्छी तरह से magic-spaceइतिहास को विस्तार देने के लिए inputrc में bash के विकल्प के साथ काम करता है । (मैं शीर्ष-वोट किए गए उत्तर का उपयोग नहीं कर सका क्योंकि मैंने ^ ^ को स्लैश में तोड़ने के लिए सेट किया है क्योंकि यह आमतौर पर अधिक उपयोगी है।)
सोरेन ब्योर्नस्टैड

@SorenBjornstad alt+backspaceआम तौर पर पहले से ही स्लैम जैसे शब्द सीमांकक पर रुक जाता है, इसलिए आपको ^Wउस कार्यक्षमता को प्राप्त करने के तरीके को बदलने की आवश्यकता नहीं है , आप गैर-शब्द-वर्ण या व्हाट्सएप सीमांकित शब्दों को हटा सकते हैं
एरिक रेनॉफ

14

अपने उदाहरण के अनुसार, आप अगले निर्माण का उपयोग कर सकते हैं:

mv foo/bar/poit/zoid/{narf.txt,troz.txt}

या यहां तक ​​कि (जैसा कि अंसार एज़्टरमैन ने सुझाव दिया है ):

mv foo/bar/poit/zoid/{narf,troz}.txt

इसके बजाय ओटी टाइपिंग / दो बार लंबे पते को कॉपी करना।


2
इसे ब्रेस विस्तार कहा जाता है ।
कोडनेम

6

काम करने के लिए मुझे यह मिला:

mv foo/bar/poit/zoid/narf.txt

Enter
आखिरी पैरामीटर को स्टोर करने के लिए हिट करें।

अब लाइन बैक में टाइप करने के लिए उपयोग करें। एक स्थान दर्ज करें और अंतिम प्रयुक्त पैरामीटर उपयोग प्राप्त करने के लिए:

Alt + .

मुझे एक त्रुटि भड़काने से नफरत है, लेकिन यह इस उपयोग के मामले में काम करता है।


शांत, एक और महान टिप सीखा!
ब्रैम

<kbd> Esc </ kbd> + <kbd>। </ kbd> (यह?) <kbd> Alt </ kbd> + <kbd> </ kbd> के समान है।
निकोस एलेक्जेंड्रिस

2

आप आसानी से चर का उपयोग कर सकते हैं:

a=test.csv ; cp $a $a.bak

या आप मामले में (नोट टैब प्रतियोगिता एक भाग के लिए काम करता है ):

a=foo/bar/poit/zoid/ ; mv ${a}narf.txt ${a}troz.txt

2

मेरे पास यह है ~/.inputrc:

"\ej":"!#:$\e^"

!#वर्तमान लाइन है, :$अंतिम शब्द है, और \e^है history-expand-line


इसे उत्तर के रूप में चिह्नित किया जाना चाहिए। 'ऑल्ट / ऑप्शन + जे' को दबाने पर अब अंतिम शब्द कॉपी हो जाता है।
मप्रदेव

2

के लिए zsh, मुझे निम्नलिखित कीबाइंडिंग मददगार लगती हैं।

# Bind alt-m to insert previous word from the current line
bindkey '^[m' copy-prev-shell-word

# Bind alt-k to kill word before cursor in vi-style
bindkey '^[k' vi-backward-kill-word

तो मैंने मारा Alt- Mआखिरी तर्क को दोहराने के लिए Alt- Kअगर मैं एक पथ के अंत से कुछ हिस्सों को हटाना चाहता हूं।

यहां आपके द्वारा देखे गए कुछ व्यवहारों का उपयोगी संदर्भ दिया जा सकता है।


2

एक छोटा इंटरैक्टिव दो कदम समाधान

  1. प्रकार: echo foo/bar/poit/zoid/narf.txt

    यह बनाता है foo/bar/poit/zoid/narf.txtके लिए उपलब्ध Alt- .बैश में शॉर्टकट।

  2. टाइप करें: mvऔर हिट Alt- ., Space, Alt-.

    आपको मिलेगा mv foo/bar/poit/zoid/troz.txt foo/bar/poit/zoid/troz.txt। अब आप अंतिम शब्द को आसानी से संशोधित कर सकते हैं।

आधी रात के कमांडर

यह उपकरण जो हो सकता है (बहुत) काम कंसोल में चलने वाला एक फ़ाइल प्रबंधक है। यह आपको फ़ाइल नाम और निर्देशिका पथ को कॉपी करने की संभावना देता है। मध्यरात्रि कमांडर आपको 2 पैनल (बाएं और दाएं) दिखाता है, जो विभिन्न निर्देशिकाओं की सामग्री को सूचीबद्ध करता है।

एक छोटा गाइड:

  • Up/ Downतीर कुंजियाँ वर्तमान पैनल में फ़ाइलों का चयन करती हैं।
  • Tab बाएँ और दाएँ पैनल के बीच स्विच।
  • Ctrl- Shift- Enterवर्तमान में चयनित फ़ाइल को कमांड लाइन पर (पूर्ण पथ सहित) कॉपी करता है
  • Alt- oदूसरे पैनल में वर्तमान में चयनित निर्देशिका को खोलता है
  • Ctrl- oआपको फुल स्क्रीन में कंसोल देखने की सुविधा देता है
  • Ctrl- x, pकंसोल में सक्रिय पैनल के पथ को कॉपी करता है
  • Ctrl- x, Ctrl- pकंसोल में निष्क्रिय पैनल के पथ को कॉपी करता है
  • Esc- Tabऑटो पूरा हो रहा है

यह अब तक का सबसे तेज़ तरीका है, जिसे मैंने शॉर्टकट के लिए इस्तेमाल करने के बाद पाया है।


0

उसी चीज़ का उपयोग {,} "डुप्लिकेटर" में करें। अर्थात:

git tag -m {v,v}1.0.1

# same as 

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