बैश कमांड लाइन पर * का विस्तार कैसे करें


34

मैं समझता हूं कि यदि आप टाइप करते हैं ls *तो यह वास्तव में विस्तारित होता है ls a b cजब वर्तमान में सीधे फाइलें होती हैं a, bऔर c

मैं सोच रहा था कि क्या मैं हिट करने से पहले इसे विस्तारित करने का कोई तरीका है। Ctrl + X कैसे काम करता है या टैब पूरा होता है, इसके समान।

इसलिए खुद को स्पष्ट करने के लिए

$ ls *
<press magic key>
$ ls a b c

इसी तरह से:

$ ls ~/
<press tab>
$ ls /home/username

मैंने सोचा कि मैंने पहले भी इसे देखा था, लेकिन मुझसे गलती हुई होगी।


ठीक है, मैं बहुत कम जानता हूं लेकिन सबसे अच्छा मुझे पता है कि $ गूंज है * <ENTER> आप ऐसा कर सकते हैं ls * कमांड से पहले। यह निश्चित रूप से विस्तार करने के लिए काफी हिटिंग टैब या शॉर्टकट नहीं है।
बार्लोप

लेकिन शायद linux यूजर्स ls * much 'cos जैसा कुछ भी नहीं करेंगे क्योंकि यह शायद ls के साथ जरूरी नहीं है, लेकिन ग्लोबिंग भी अलग-अलग गोले पर अलग-अलग तरह से व्यवहार करता है इसलिए यह पोर्टेबल नहीं है, लेकिन जब सुविधाजनक है तो ठीक है। लेकिन ls के मामले में, आवश्यक नहीं है। ls * / सूचियों को सूचीबद्ध करता है, लेकिन ऐसा नहीं है कि ls को क्या करने के लिए डिज़ाइन किया गया है।

जवाबों:


19

आप glob-expand-wordफ़ंक्शन का उपयोग कर सकते हैं , आदमी से bash:

बिंदु से पहले शब्द को पाथनाम के लिए एक पैटर्न के रूप में माना जाता है
विस्तार, और मिलान फ़ाइल नामों की सूची डाली गई है,
शब्द की जगह। यदि एक संख्यात्मक तर्क दिया जाता है, तो ए
पथनाम विस्तार से पहले तारांकन जोड़ा जाता है।

अपने लिए कुछ इस तरह जोड़ें ~/.inputrc:

Control-x: glob-expand-word

तो आपके उदाहरण में इसका विस्तार $ ls *किया Ctrl-Xजाएगा $ ls a b c


8
यह पहले से ही बाध्य होना चाहिए। और Ctrl-x पहले से ही सामान के एक समूह के लिए एक उपसर्ग के रूप में बाध्य है। क्या bind -p | grep 'C-x'उन्हें देखने के लिए।
अगली सूचना तक रोक दिया गया।

बिलकुल वही, जिसकी मुझे तलाश थी! धन्यवाद
bramp

@ डेनिस, यह पहले से ही बाध्य नहीं था, लेकिन इसे मेरे .inputrc में जोड़ना है। मुझे लगता है कि डेबियन की डिफ़ॉल्ट है।
नोवा

3
@ डेनिस: यह C-x*मेरे सिस्टम पर बाध्य है।
19


11

जब आप viमोड में हैं ( set -o vi), "मैजिक की" है Esc*। यह bashऔर दोनों के साथ काम करता है ksh


केवल वाइमर के लिए स्पष्ट होने के लिए, पहले कमांड लाइन को सामान्य रूप से टाइप करते समय तारांकन चिह्न टाइप करें, फिर संपादन मोड से बाहर निकलें, कर्सर तारांकन चिह्न पर पता लगाएगा यदि आप तुरंत बचते हैं, तो तारांकन चिह्न और ग्लोब पर स्थित कर्सर के साथ तारांकन चिह्न को हिट करें विस्तार करें और आपको फिर से संपादन मोड में छोड़ दें।
नीलजी

4
$ बाइंड -q ग्लोब-एक्सपेंडेबल-वर्ड
ग्लोब-विस्तार-शब्द को "\ Cx *" के माध्यम से लागू किया जा सकता है।

$ बाइंड -क्यू इंसर्ट-कम्प्लीमेंट्स
सम्मिलित-पूर्णता को "\ e *" के माध्यम से लागू किया जा सकता है।

तो इन का उपयोग करने के लिए हम कर सकते हैं

ls * Ctrl+x *

या

ls * Esc *

प्रवेश करने से पहले जटिल लाइनों का विस्तार करें


यह सबसे अच्छा जवाब है क्योंकि यह सटीक कीबाइंडिंग दिखता है, जो विभिन्न वातावरणों में भिन्न हो सकता है।
1

0

ग्लोब-एक्सपेंडेबल-वर्ड (\ Cx *) का एक विकल्प सम्मिलित-पूर्णता (\ e *) है। यह अंत में एक तारांकन के बिना काम करता है, लेकिन इसमें छिपी हुई फ़ाइलों की तरह अन्य पूर्णताएं भी शामिल हैं। मैं दोनों में पलटाव है ~ / .inputrc:

# insert glob results (\C-x* by default)
"\C-g": glob-expand-word

# insert completion list (\e* by default)
"\ei": insert-completions

ग्लोब-कम्प्लीट-वर्ड (\ उदा) का उपयोग उदाहरण के /System/Library/Launch*/*Finderलिए परिवर्तित करने के लिए किया जा सकता है /System/Library/LaunchAgents/com.apple.Finder.plist

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