डॉट इन कमांड क्यों?


14

आमतौर पर, कोई व्यक्ति findइस तरह दिखने वाली कमांड देखता है :

$ find . -name foo.txt

जब खोज वर्तमान निर्देशिका से शुरू होनी है। मुझे पता है कि मेरी मशीनों (उबंटू, साइगविन) पर मुझे बिना डॉट के ही परिणाम मिलते हैं।

इसे आम तौर पर शामिल क्यों किया जाता है? क्या यह केवल स्पष्ट होने के लिए एक सम्मेलन है, या क्या कुछ प्रणालियों पर इसकी आवश्यकता है?

जवाबों:


27

कुछ संस्करणों * की findआवश्यकता है कि आप एक मार्ग तर्क प्रदान करते हैं जो एक निर्देशिका है जिससे खोज शुरू करना है। डॉट .बस वर्तमान निर्देशिका का प्रतिनिधित्व करता है आमतौर पर जहां आप खोजना चाहते हैं।

आप इसे किसी भी पथ से बदल सकते हैं जिसे आप खोज का आधार बनाना चाहते हैं। खोजने के कुछ संस्करणों में इसे छोड़ा जा सकता है क्योंकि वर्तमान निर्देशिका निहित है यदि कोई पथ तर्क मौजूद नहीं है।

आप man findअपने शेल में तर्कों के बारे में जानकारी के लिए दौड़ सकते हैं । उदाहरण के लिए खदान के लिए उपयोग सिनॉप्सिस इंगित करता है कि पथ तर्क वैकल्पिक है (वर्ग वर्ग के अंदर []):

   find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

यदि आप findसभी फाइलों को बिना किसी तर्क के साथ चलाते हैं और वर्तमान फ़ोल्डर से शुरू होने वाली सभी निर्देशिकाओं को वापस कर दिया जाएगा। आपका उदाहरण केवल स्पष्ट रूप से बताता है कि खोज से शुरू होना चाहिए .और इसमें -name foo.txtखोज फ़िल्टर में से एक के रूप में अभिव्यक्ति शामिल है ।

* विशेष रूप से सभी BSD वेरिएंट और POSIX मानक के लिए कड़ाई से चिपके हुए कुछ भी । GNU खोज वैकल्पिक होने की अनुमति देता है।


1
क्या आपको पता है कि किस संस्करण को खोजने की आवश्यकता है? या जहाँ मैं आगे की जाँच करने के लिए देख सकता था? (गूगल के लिए मुश्किल है)
एरिक विल्सन

डिफ़ॉल्ट खोज पथ के बारे में दिलचस्प बात।
rozcietrzewiacz

2
मेरा मानना ​​है कि अधिकांश BSD खोजने वाले वेरिएंट को पथ तर्क की आवश्यकता होती है जबकि GNU यह वैकल्पिक है। विविधताएं मौजूद हो सकती हैं।
कालेब

2
ध्यान दें कि कम से कम 2008 POSIX मानक विनिर्देशों में, pathखोजने के लिए एक आवश्यक तर्क है
कालेब

1
नाइट पिक: "आप इसे [डॉट] को किसी भी पथ से बदल सकते हैं जिसे आप चाहते हैं" → "कोई भी पथ जो आप चाहते हैं", क्योंकि आप कह सकते हैं find dir1 dir2 dir3 -name foo.txt
जी-मैन का कहना है कि 'मोनिका'

5

उदाहरण के लिए खोज का AIX संस्करण, पथ की आवश्यकता है और यदि कोई उपलब्ध नहीं है तो नहीं चलेगा।

# oslevel -s
5300-08-03-0831
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

# oslevel -s
6100-03-01-0921
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

यद्यपि कुछ AIX मशीनों में एक GNU स्थापित पाया जा सकता है, जो पथ के बिना सामना कर सकता है,

# oslevel -s
6100-03-01-0921
# /opt/freeware/bin/find -version
GNU find version 4.1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.