नीचे स्क्रॉल करें ...
फ़ाइलनाम .
और ..
हमेशा GLOBIGNORE
सेट नहीं होने पर अनदेखा कर दिए जाते हैं ।
अधिकांश समय, यह शामिल करने के लिए वांछनीय नहीं है .
और ..
वाइल्डकार्ड मैचों, क्योंकि वे निर्देशिका के अंदर फ़ाइलों का प्रतिनिधित्व नहीं करते के रूप में - वे निर्देशिका नेविगेशन काम करने वाले हैं हैक्स। वास्तव में, डॉट फ़ाइलों की उत्पत्ति कमांड के शुरुआती संस्करण में एक बग हैls
। लेखक का मतलब सूची से बाहर करना था .
और ..
गलती से शुरू होने वाली सभी फाइलों को छोड़ दिया था .
। इस प्रकार से डॉट फाइलें छिपी हो गईं ls
। गोले की तरह फाइलों को छिपाकर गोले सूट करते हैं ls
। हालांकि जिस तरह से यह किया गया था वह फिर से हैक था: .
डॉट में पैटर्न स्पष्ट रूप से मेल नहीं खाता है, तो इसके साथ शुरू होने वाली फाइलें केवल बाहर रखी गई हैं। तो पैटर्न .*
शामिल हैं .
और ..
।
मौजूदा स्क्रिप्ट के साथ संगतता को बनाए रखने के लिए, आधुनिक गोले अभी भी शामिल हैं .
और ..
(zsh को छोड़कर, जो इस मुद्दे पर जैसे कई अन्य लोगों के पास एक संस्कार है, लेकिन पिछड़े संगत व्यवहार नहीं है)। हालाँकि, यदि आप सेट GLOBIGNORE
करते हैं , तो आप एक बैश-विशिष्ट सुविधा का उपयोग कर रहे हैं, जो दर्शाता है कि आप पिछड़ी संगतता में रुचि नहीं रखते हैं। इसलिए पैटर्न से मेल खाने के लिए .
और ..
सभी पैटर्न के मेल से परिवर्तन होता है ।
GLOBIGNORE=.
किसी फ़ाइल को सेट करना किसी भी तरह GLOBIGNORE
से स्वचालित रूप से बाहर रखा जाता है जब भी सेट किया जाता है, इसलिए यह shopt -s dotglob
सिवाय इसके समतुल्य है .
और ..
इसके बाद सभी पैटर्न से बाहर रखा गया है।
GLOBIGNORE
अनदेखा करने.
और..
स्लेश-कम पैटर्न और GLOBIGNORE फ़िल्टर फ़ाइल पथ में फ़ाइल नाम नहीं होने का एहसास हुआ ।GLOBIGNORE=.; echo .*
शामिल नहीं होगा.
और न ही..
, लेकिनGLOBIGNORE=.; echo ./.*
(याecho /bin/.*
) होगा! अनदेखी करने के लिए.
और..
सभी globs से, ऐसा लगता है आप की जरूरत लग रहा हैshopt -s extglob
औरGLOBIGNORE='?(*/)@(.|..)'
।