मैं पिछली बैश कमांड के तर्क को कैसे याद कर सकता हूं?


312

क्या पिछली कमांड के तर्क को याद करने के लिए बैश में एक तरीका है?

मैं आमतौर पर इसके vi file.cबाद करता हूं gcc file.c

क्या पिछली कमांड के तर्क को याद करने के लिए बैश में एक तरीका है?


2
संभावित डुप्लिकेट: stackoverflow.com/questions/4009412/…
यूगनेव्ड

जवाबों:


562

आप पिछली कमांड के अंतिम तर्क का उपयोग कर सकते हैं $_या !$याद कर सकते हैं ।

इसके अलावा Alt + .पिछले आदेशों में से किसी का अंतिम तर्क याद करने के लिए इस्तेमाल किया जा सकता।


121
इसके अलावा, अगर आप एक मनमाना तर्क चाहते हैं, आप उपयोग कर सकते हैं !!:1, !!:2आदि ( !!:0है पिछला आदेश ही।) देखें gnu.org/software/bash/manual/bashref.html#History-Interaction
janmoesen

41
इसी तरह !$, आप !^पहले तर्क के लिए उपयोग करते हैं।
विल

13
आह ... * निक्स ... तुम खूबसूरती की चीज हो ... रोज मैं तुमसे ज्यादा प्यार करता हूं
jx12345

हम पिछली कमांड के दूसरे से आखिरी तर्क को कैसे संदर्भित कर सकते हैं? उदाहरण के लिए, यदि मैंने दिया, तो मैं निम्नलिखित कमांड पर echo tiger rabbitकैसे बता सकता हूं tiger?
किम

3
Alt + .vi मोड में काम नहीं करता है। सिर्फ FYI करें, दूसरों के लिए जो यहाँ भ्रमित थे।
बजे ब्रायन मैककचटन

160

यदि पिछली कमांड में दो तर्क थे, जैसे

ls a.txt b.txt

और आप पहले वाला चाहते थे, आप टाइप कर सकते हैं

!:1

दे रही है

a.txt

या यदि आप दोनों चाहते थे, तो आप टाइप कर सकते हैं

!:1-2

दे रही है

a.txt b.txt

आप इसे किसी भी तर्क के लिए बढ़ा सकते हैं, जैसे:

!:10-12

@RNA, मैंने यह सुनिश्चित करने के लिए फिर से कोशिश की कि मैं एक टाइपो को शामिल नहीं कर सकता, क्या आप थोड़ा और विवरण प्रदान कर सकते हैं (जैसे? Ubuntu कमांड लाइन, विंडोज़ के लिए साइबर? त्रुटि संदेश? पिछली पंक्ति?)
रॉबर्ट गॉलैंड

मैं GNU बैश, संस्करण 3.2.51 (1) -release (x86_64-apple-darwin13) कॉपीराइट (C) 2007 फ्री सॉफ्टवेयर फाउंडेशन, इंक। का उपयोग कर रहा हूं। त्रुटि संदेश है-bash: :1-2: bad word specifier
RNA

2
अगर पिछली लाइन में दो तर्क नहीं थे, तो मुझे वही मिलता है। उदाहरण के लिए। लाइन 1 ls a.txtलाइन 2ll !:1-2
रॉबर्ट गॉललैंड

आप सही हे। यह एक मूर्खतापूर्ण गलती है जो मैंने की थी। धन्यवाद!
आरएनए

सभी तर्कों को प्राप्त करने के लिए, !:^-$संख्याओं के संयोजन में निश्चित रूप से समान कोड का उपयोग किया जा सकता है।
816-8055

88

!!:nजहाँ nआप चाहते हैं की 0-आधारित स्थिति है।

उदाहरण के लिए:

echo 'one' 'two'
# "one two"

echo !!:2
# "two"

!उपसर्ग का उपयोग पिछले आदेशों किया जाता है।

अन्य उपयोगी कमांड:

  • !$ - पिछली कमांड से अंतिम तर्क
  • !^ - पिछली कमांड से पहला तर्क (प्रोग्राम / बिल्ट-इन / स्क्रिप्ट के बाद)
  • !! - पिछली कमांड (अक्सर "बैंग बैंग" का उच्चारण किया जाता है)
  • !n- आदेश संख्या nसेhistory
  • !pattern - सबसे हालिया कमांड मिलान pattern
  • !!:s/find/replace- अंतिम आदेश, के findसाथ स्थानापन्नreplace

कमांड इतिहास पर अधिक जानकारी


7
इसके बजाय !!:s/find/replace, आप भी कर सकते हैं ^find^replace
बिग मैकलारेग्यूज

इसके अलावा: !* - पिछले कमांड (प्रोग्राम / बिल्ट-इन / स्क्रिप्ट के बाद) से सभी तर्क। उदाहरण: ls *.tmp *.cache rm !*
Aphoid

68

कमांड लाइन में आप esc- .या alt+ दबा सकते हैं.

यह आपके पिछले आदेशों के अंतिम तर्क के माध्यम से चक्रित होता है


मैं हमेशा पाया है और साथ ही साथ काम करने के लिए कुंजी।
बाल्टी

@ बकेट की चाबियां हालांकि पिछली कमांड्स के पास जाती हैं, जबकि एंटोनियो द्वारा प्रदान किया गया समाधान पिछले तर्कों (केवल प्रत्येक पिछले कमांड के अंतिम तर्क) से गुजरने की अनुमति देता है
everyonesdesign

30

यदि आप किसी विशेष कमांड के लिए इतिहास में दी गई संख्या जानते हैं, तो आप निम्नलिखित शब्दों का उपयोग करके उस कमांड में बहुत तर्क ले सकते हैं।

इतिहास में तीसरे आदेश से दूसरा तर्क लेने के लिए निम्नलिखित का उपयोग करें,

!3:2

इतिहास में पांचवें अंतिम आदेश से तीसरा तर्क लेने के लिए निम्नलिखित का उपयोग करें,

!-5:3

माइनस साइन का उपयोग करते हुए, आप इसे इतिहास की अंतिम कमांड से पार करने के लिए कहते हैं।


19

! * पिछले सभी तर्कों के साथ एक नई कमांड चलाता है।

ls /tmp
cd !*
#you are now in /tmp

यह मेरे लिए OSX पर काम नहीं करता था - $_इसके बजाय उपयोग करना था।
माइक डब्ल्यू

16

हां, आप !$पूर्ववर्ती कमांड के अंतिम तर्क को याद करने के लिए उपयोग कर सकते हैं ।


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