केस-असंवेदनशील फाइलसिस्टम ऊपरी और निचले केस फाइल नामों दोनों को कैसे प्रदर्शित करते हैं?


12

यह सवाल मुझे दूसरे दिन हुआ जब मैं एक विकास परियोजना पर काम कर रहा था जो फ़ाइल नामों के संबंध में एक राय के आधार पर निर्भर करता है। फ्रेमवर्क (यहाँ अप्रासंगिक) ऊपरी मामले-पहले फ़ाइलनाम देखना चाहता था। यह मुझे सोच में पड़ गया।

केस-असंवेदनशील फ़ाइल सिस्टम पर, एक्सफ़ैट या एचएफएस + (विशेष रूप से गैर-केस संवेदनशील) कहते हैं कि फ़ाइल सिस्टम फ़ाइल नाम के ऊपरी और निचले दोनों संस्करणों के साथ एक ही फ़ाइल तक कैसे पहुंच प्रदान करता है ।

उदाहरण के लिए:

$ cd ~/Documents
$ pwd
/home/derp/Documents

$ cd ../documents
$ pwd
/home/derp/documents

$ cd ../docuMents
$ pwd
/home/derp/docuMents

$ cd ../DOCUMENTS
$ pwd
/home/derp/DOCUMENTS

$ cd ../documentS
$ pwd
/home/derp/documentS

ये सभी कमांड एक ही डायरेक्टरी को हल करेंगे। क्या यह व्यवहार, विशेष रूप से इस मामले में pwdकेवल एक फ़ंक्शन से आउटपुट है bashजो मुझे दिखा रहा है कि यह क्या सोचता है कि मैं देखना चाहता हूं?

एक और उदाहरण:

$ ls ~/Documents
Derp.txt    another.txt    whatThe.WORLD

यहां फाइलसिस्टम मूल फाइलनाम के मामले की रिपोर्ट करता है जैसा कि उपयोगकर्ता या प्रोग्राम द्वारा बनाया गया है।

फाइलसिस्टम स्टैक में किस बिंदु पर मानव पठनीय फ़ाइल नाम संरक्षित किया गया है क्योंकि इसे बनाया गया था (उदाहरण के लिए ऊपरी और निचला मामला) ताकि इसे सही ऊपरी और निचले ASCII वर्णों के किसी भी संयोजन द्वारा एक्सेस किया जा सके? यह सिर्फ एक रेगीक्स चाल है या कहीं और कुछ चल रहा है?

संपादित करें: ऐसा लगता है कि मैं जिस व्यवहार को लेकर उत्सुक हूं, वह कुछ और मामलों के बाद केस-असंवेदनशील फाइल सिस्टम के संरक्षण में पाया जाता है ।


इसे एक उत्तर के रूप में नहीं लिखना क्योंकि मुझे यकीन नहीं है, लेकिन मेरा मानना ​​है कि आपके पास उस फ़ाइल सिस्टम में ~ / दस्तावेज़ और ~ / दस्तावेज़ नहीं हो सकते हैं। लेकिन जब आप cd ~ / Documents या ~ / डॉक्यूमेंट्स को एक ही जगह पर ले जा रहे हैं और आपका शेल टाइप किया हुआ है, यह याद करके "अच्छा खेल रहा है"। दूसरा पक्ष यह है कि कुछ FS एक ऑक्स में जिस तरह से बनाया गया था, उसे स्टोर करते हैं। डेटा का हिस्सा। उदाहरण के लिए लुकिंग टेबल में ~ / डॉक्यूमेंट्स को स्टोर करना लेकिन एफएस को ~ / डॉक्यूमेंट्स के रूप में लिखना। मूल रूप से एक भ्रम पैदा कर रहा है कि फ़ाइल सिस्टम आवरण के बारे में परवाह करता है जब वह नहीं करता है।
coteyr

मैंने जो देखा है, उस घटना में, जिसमें एक निर्देशिका में दो फ़ाइल नाम शामिल हैं, जो मामले को छोड़कर समान हैं, गैर-केस-संवेदी फ़ाइल सिस्टम किसी दिए गए फ़ाइल के लिए एक मनमाने ढंग से चयन करके अनुरोध का जवाब दे सकते हैं। यदि फ़ाइल बनने के बाद ऊपरी / निचले रूपांतरण के नियम बदल जाते हैं तो ऐसी स्थितियाँ उत्पन्न हो सकती हैं।
सुपरकैट

NTFS की प्रकृति को संरक्षित करने के मामले के बारे में अच्छी जानकारी: superuser.com/questions/364057/why-is-ntfs-case-sensitive
कनाडाई ल्यूक

जवाबों:


14

केस-असंवेदनशील फाइलसिस्टम का अर्थ है कि जब भी फाइलसिस्टम से पूछना होता है "क्या A उसी फ़ाइल / निर्देशिका को B के रूप में संदर्भित करता है?" यह अपर / लोअरकेस में अंतरों की अनदेखी करने वाली फाइलों / निर्देशिकाओं के नामों की तुलना करता है (वास्तव में अपर / लोअरकेस अंतरों की गिनती फाइलसिस्टम पर निर्भर करती है - ASCII से परे मिलते ही यह गैर-स्पष्ट है)। एक केस-संवेदी फाइलसिस्टम उन अंतरों को अनदेखा नहीं करता है।

केस-प्रोटेक्टिंग फाइलसिस्टम फ़ाइल नाम को स्टोर करता है जैसा कि दिया गया है। एक गैर-मामला-संरक्षण फाइल सिस्टम नहीं करता है; यह आम तौर पर सभी अक्षरों को अपरकेस में बदल देगा, उन्हें स्टोर करने से पहले (सैद्धांतिक रूप से, यह लोअरकेस, या RaNsOm NoTe केस का उपयोग कर सकता है, या जो भी हो, लेकिन AFAIK सभी वास्तविक दुनिया वाले अपरकेस का उपयोग करते हैं)।

आप किसी भी संयोजन में उन दो विशेषताओं को एक साथ रख सकते हैं। मुझे यकीन नहीं है कि आप गैर-केस-प्रोटेक्टिंग केस-सेंसिटिव फाइल सिस्टम पा सकते हैं, लेकिन आप निश्चित रूप से एक बना सकते हैं। अन्य सभी संयोजन वास्तविक प्रणालियों में मौजूद हैं या मौजूद हैं, हालांकि।

इसलिए एक केस-संरक्षण, केस-असंवेदनशील फाइलसिस्टम (आजकल केस-असंवेदनशील फाइलसिस्टम का सबसे सामान्य प्रकार) जो भी पूंजीकरण आपने बनाया या अंतिम नाम दिया, उसमें फ़ाइल नाम को स्टोर और वापस करेगा, लेकिन दो फ़ाइल नामों की तुलना करते समय (यदि एक की जाँच करने के लिए) मौजूद है, एक को खोलने के लिए, एक को हटाने के लिए, आदि) यह मामले के अंतर को अनदेखा करेगा।

जब आप यूनिक्स बॉक्स पर केस-असंवेदनशील फाइलसिस्टम का उपयोग करते हैं, तो विभिन्न उपयोगिताओं अजीब चीजें करेंगे क्योंकि यूनिक्स परंपरागत रूप से केस-संवेदी फाइलसिस्टम का उपयोग करता है - इसलिए वे उम्मीद नहीं कर रहे हैं Document1और document1एक ही फाइल हो सकती है।

में pwdमामला है, आप जो देख रहे हैं कि यह डिफ़ॉल्ट रूप से सिर्फ पथ आप वास्तव में निर्देशिका के लिए प्राप्त करने के लिए इस्तेमाल आउटपुट है। इसलिए यदि आप इसके माध्यम से वहां पहुंच गए हैं cd DirName, तो यह DirNameआउटपुट में उपयोग करेगा। यदि आप के माध्यम से वहाँ गया था DiRnAmE, तो आप DiRnAmEआउटपुट में देखेंगे । बैश ऐसा करता है कि आप $PWDपर्यावरण चर में अपनी वर्तमान निर्देशिका के लिए कैसे ट्रैक करते हैं। मुख्य रूप से यह सिम्बलिंक के लिए है (यदि आप cdएक सिमलिंक में हैं, तो आप सिम्लिंक को अपने में देखेंगे pwd, भले ही यह वास्तव में आपके वर्तमान निर्देशिका के पथ का हिस्सा न हो)। लेकिन यह कुछ हद तक अजीब व्यवहार भी देता है जो आप केस-असंवेदनशील फाइल सिस्टम पर देखते हैं। मुझे संदेह है कि pwd -Pडिस्क पर संग्रहीत मामले का उपयोग करके आपको निर्देशिका नाम दिया जाएगा, लेकिन परीक्षण नहीं किया है।


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