जब Windows एक ही नाम से दो फाइलों का सामना करता है, लेकिन NTFS विभाजन में अलग-अलग पूंजीकरण में डिफ़ॉल्ट अपेक्षित व्यवहार क्या है?


16

लिनक्स से NTFS विभाजन में दो फ़ाइलों को लिखना आसान है, और उन दोनों फ़ाइलों में समान अक्षर हैं, लेकिन विभिन्न मामलों के साथ, जैसे some_file.txt और Some_File.txt। लिनक्स उन्हें अलग करता है।

विंडोज इनसे कैसे निपटता है?


1
व्यक्तिगत रूप से, इसमें शामिल सभी कारकों के कारण, मैं सिर्फ यह कहूंगा कि यह अपरिभाषित व्यवहार का कारण बनता है। यदि विंडोज इस मामले में व्यवहार को परिभाषित नहीं करता है, तो परिभाषा के अनुसार, यह अपरिभाषित है। विंडोज तो करता व्यवहार को परिभाषित, मैं अभी भी यह अनिर्धारित व्यवहार के रूप में, इलाज क्योंकि मैं गंभीरता से संदेह है कि सभी कार्यक्रमों इस लगातार संभाल होगा।
jpfx1342

जवाबों:


20

MS-DOS, WOW, और Win32 व्यक्तित्व पहली मिलान फ़ाइल लौटाएंगे। कुछ अनुप्रयोगों और APIs के लिए, केस असंवेदनशीलता है से लागू (जैसे, MS-DOS सिर्फ इसके साथ सौदा नहीं कर सकते हैं)। POSIX व्यक्तित्व अंतर करेगा और डिफ़ॉल्ट रूप से संवेदनशील है (यदि आपके पास UNIX उपकरण स्थापित हैं, उदाहरण के लिए)। देशी Windows NT कमांड प्रॉम्प्ट दोनों को प्रदर्शित करेगा, लेकिन सेटिंग्स (ObCaseInsensitive) पर निर्भर करता है और जो API उपकरण का उपयोग करता है, केवल वह पहली बार उपयोग करता है जो इसे पाता है।

Microsoft टेक्नेट लेख देखें। फ़ाइल नाम NTFS वॉल्यूम (KB100625) पर केस सेंसिटिव हैं और विभिन्न NT सबसिस्टम में केस सेंसिटिविटी की सूक्ष्मताओं की विस्तृत चर्चा : विंडोज में केस सेंसिटिविटी को समझना: obcaseinsensitive, FILE_CASE_SENSITIVE_SEARCH

विशेष रूप से, ObCaseInsensitive मान पूरे NT ऑब्जेक्ट प्रबंधक की केस संवेदनशीलता को नियंत्रित करता है:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive
  • जब 0 पर सेट किया जाता है, तो वस्तु प्रबंधक संवेदनशील मोड में चलता है।
  • जब 1 पर सेट किया जाता है, तो वस्तु प्रबंधक असंवेदनशील मोड में चलता है।
  • अनिर्दिष्ट, NT 5.1 (Windows XP) और बाद के संस्करण असंवेदनशील मोड में चलने के लिए डिफ़ॉल्ट होते हैं।
  • NT के 5.0 (Windows 2000) और NT के पूर्व संस्करणों में obcaseinsensitive का कोई अर्थ नहीं है, जो हमेशा केस संवेदनशील मोड में चलते हैं।

Cygwin को इस बिंदु पर अंतर्निहित / प्रभावी केस-सेंसिटिविटी सेटिंग्स को चुनना चाहिए

संबंधित सुपरयूजर प्रश्न विंडोज 7 में फ़ोल्डर नाम केस संवेदनशीलता को कैसे कॉन्फ़िगर करें? और TechNet आलेख फ़ाइल और फ़ोल्डर नामों के लिए केस संवेदनशीलता को कॉन्फ़िगर करें NT में फ़ाइलों और फ़ोल्डरों के लिए पूर्ण केस संवेदनशीलता को सक्षम करने के बारे में अधिक जानकारी है यदि आपको नियमित रूप से इस स्थिति को संभालने की आवश्यकता होगी।

केस-सेंसिटिव टूलिंग / NTFS / NFS वॉल्यूम तक अतिरिक्त संसाधन:


यदि दो फाइलें मौजूद हैं, तो One.txt और One.txt, अगर मैं one.txt की आपूर्ति करता हूं, तो कौन सी फाइल "पहले मैच" करेगी? क्या ऐसे नियम हैं जिन पर "पहली मिलान फ़ाइल" होगी?
त्रिशूत्र

1
यह शायद एक निर्देशिका में आंतरिक फ़ाइल आदेश पर आधारित है। यदि आप जानना चाहते हैं तो मैं कल इसे आजमाऊंगा।
डेनियल बी

2
जो पहले है वह शुद्ध रूप से उस क्रम से तय किया जाता है जिसमें वे निर्देशिका में दिखाई देते हैं। यह जरूरी नहीं है कि जिस क्रम में वे बने हैं। और यह बदल सकता है यदि फ़ाइल या तो संशोधित की गई है या डायरेक्टॉय अपडेट किया गया है। (Chkdsk, Defrag, डिलीट करना, उस फोल्डर में अन्य फाइल्स को मूव करना सभी ऑर्डर को बदल सकते हैं।)
Tonny

1
@trusktr खैर, जाहिर तौर पर किसी तरह का आदेश है, आखिरकार। मैंने कई फाइलों को (NTFS-3G का उपयोग करके) बनाया, प्रत्येक को अलग-अलग पूंजीकरण के साथ और अलग-अलग क्रम में। विंडोज (या, अधिक सटीक रूप से, नोटपैड) हमेशा सृजन आदेश की परवाह किए बिना एक बड़े अक्षर से शुरू होने वाली फ़ाइल उठाता है। moreबस एक प्रश्न चिह्न देता है, हालाँकि।
डैनियल बी

1
@trusktr यह निर्देशिका के B + ट्री की INDX प्रविष्टियों के क्रम का पालन करेगा। इस पेड़ को डिज़ाइन द्वारा क्रमबद्ध रखा गया है, लेकिन NTFS चालक के आधार पर इसमें थोड़ा अंतर हो सकता है। यह (OnCaseInsensitive = 0, Win32 / DOS / WOW API) निर्दिष्ट नाम और INDX प्रविष्टि नाम के (सॉर्ट किए गए) पेड़ पर चलते हुए पहला मैच होगा। NTFS ऑर्डिनल तुलना का उपयोग करता है, इसलिए अपरकेस हमेशा लोअरकेस से पहले पाया जाना चाहिए । (AZ = 0041-005A, az = 0061-007A)
मैक्सएक्स डेमन

2

यह नहीं है यह मामले के अंतर पर विचार करता है, लेकिन ठीक उसी नाम के समान फ़ाइल।

आप सभी लोअरकेस में एक फ़ाइल बनाकर इसका परीक्षण कर सकते हैं, फिर ऊपरी में केवल एक अक्षर के साथ दूसरा बना सकते हैं और यह शिकायत करेगा।


मेरे पास अभी परीक्षण करने का वातावरण नहीं है। मेरे पास इस समय केवल ओएस एक्स है। क्या आप बता सकते हैं कि क्या होता है? मेरा पहला अनुमान यह होगा कि विंडोज ने अनजाने में (शायद अनजाने में) जो कुछ मानदंडों द्वारा पढ़ने / लिखने के लिए फाइल की है (उदाहरण के लिए निचले मामले में पूर्ववर्ती, या इसके विपरीत लेक्सिकल ऑर्डर)। या यह किसी भी फाइल को हेरफेर करने की अनुमति नहीं देता है?
शाम

1
@trusktr सिस्टम शिकायत करता है कि फ़ाइल पहले से मौजूद है, इसमें शामिल एप्लिकेशन या कोड के आधार पर, इसे चुपचाप अनदेखा कर दिया जाएगा और बस preexisting फ़ाइल को अधिलेखित कर दिया जाएगा। जैसा कि jpfx1342 ने टिप्पणी की , इस मुद्दे को अपरिभाषित व्यवहार माना जाना चाहिए।
केसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.