क्या गोला की एक विशेषता ग्लोबिंग है?


12

मैंने इस और इस तरह के कई सवाल और जवाब पढ़े

मुझे पता है कि कमांड चलाने से पहले वाइल्डकार्ड शेल द्वारा विस्तारित किए जाते हैं और वे शेल की एक विशेषता हैं। वाइल्डकार्ड उन आदेशों के साथ काम करते हैं जो कई तर्कों को स्वीकार कर सकते हैं। में find . -name *.rb अगर हम वर्तमान निर्देशिका में एक से अधिक फ़ाइल है findहमें एक त्रुटि दे खोजने कई तर्कों और हल करने के लिए इस कर रहे हैं तरीके को स्वीकार नहीं कर सकते क्योंकि जाएगा:

find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb

हम तारांकन से बचते हैं और शेल द्वारा विस्तार को रोकते हैं लेकिन वाइल्डकार्ड शेल की एक विशेषता है; जब हम तारांकन चिह्न से बचते हैं, तो इसके अर्थ के बारे में नहीं जानते हैं, और इसे नाम की एक फ़ाइल मिलनी चाहिए *.rb, इसलिए इस मामले में तारांकन का विस्तार कैसे किया जा रहा है?

जवाबों:


21

हां, शेल *डायरेक्टरी के किसी भी कैरेक्टर वाली सभी फाइलों को समझता है और सभी फाइल को किसी भी कैरेक्टर के *.rbसाथ खत्म करता है .rbऔर उसे इस तरह एक्सपेंड करता है।

findआदेश ही ग्लोबिंग स्वीकार करता है।

आप बोली नहीं है, तो *फिर खोल यह विस्तार होगा से पहलेfind आदेश अपने तर्क है, तो बजाय एक ग्लोब देखता है *.rbके लिए पारित किया find, निर्देशिका को दे दिया जाएगा में ग्लोब मिलान सभी फ़ाइलों के नाम find, और findउन्हें समझने की कोशिश करेंगे तर्क के रूप में, जिसके परिणामस्वरूप त्रुटि होगी, या कम से कम आप जो चाहते हैं (यह सही ढंग से केवल तभी काम करेगा जब वर्तमान निर्देशिका में कोई मिलान फ़ाइलें नहीं हैं)


धन्यवाद, इसका मतलब है कि हम कहते हैं कि यह एक गोला नहीं है, लेकिन कुछ आदेश वाइल्डकार्ड का विस्तार कर सकते हैं? या हम यह कह सकते हैं कि अगर हमारे पास एक शेल है जो बिना ग्लोबिंग के उन कमांडों को समझने के बारे में है जो ग्लोबिंग के बारे में जानते हैं तो उनका विस्तार कर सकते हैं?
सिनोश

5
अगर *उद्धृत किया जाता है, तो शेल इसे विस्तारित नहीं करेगा, और ग्लोब सहित तर्क को कमांड को पारित किया जाता है जो ग्लोब को समझ सकता है - यह किसी भी कमांड के लिए समान है जो रेगेक्स को स्वीकार करता है जिसे हमेशा उद्धृत किया जाना चाहिए ...
Zanna

1
मेरी खुशी ^ _ ^
Zanna

7
@ साइनो: ध्यान दें कि सभी कमांड ग्लोब सिंटैक्स को नहीं समझते हैं। यह सिर्फ एक सुविधा के लिए होता हैfind
स्लीबटमैन

1
@Sinoosh ढूँढें वाइल्डकार्ड का वास्तव में "विस्तार" नहीं कर रहा है, यह इसे प्रत्येक फ़ाइलनाम से मेल खाने के लिए एक परीक्षण के रूप में उपयोग कर रहा है। पारंपरिक अर्थों में वाइल्डकार्ड्स का विस्तार करने वाले कुछ (बहुत) आदेश हैं - अनज़िप और 7z [archive filename single argument] [list of files to extract]उदाहरण के लिए कई अभिलेखागार खोलने के लिए इसका उपयोग कर सकते हैं (जब उनके तर्क सामान्य रूप से " " हैं)।
रैंडम 832
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.