बहुत सारे कारण ऐतिहासिक हैं। इसका मतलब यह नहीं है कि वे आज समझ में नहीं आता है।
पोर्टेबिलिटी में समस्याएँ
किसी फ़ाइल का नामकरण करते समय, आपको यह भी विचार करना पड़ सकता है कि अन्य (फ़ाइल) सिस्टम उस फ़ाइल नाम के साथ कैसे व्यवहार करेंगे। फ़ाइल नाम का एक वर्ण आपके सिस्टम के लिए ठीक हो सकता है, लेकिन यह किसी अन्य सिस्टम के लिए एक समस्या हो सकती है।
इसलिए, जब तक कि थोड़ी सी भी संभावना नहीं थी कि आप एक पुराने सिस्टम से आसानी से फ़ाइल तक पहुंचने में सक्षम हो सकते हैं, आप अपना सुरक्षित चरित्र चुन लेंगे । इसमें एक पुरानी पुनर्प्राप्ति प्रणाली शामिल हो सकती है जिसे आपने आसपास रखा है या यह डर है कि हाल के विंडोज संस्करण अभी भी किसी तरह एमएस-डॉस पर आधारित हैं।
लंबाई
एक फ़ाइल सिस्टम एक फ़ाइल की लंबाई को सीमित कर सकता है। यह उन दिनों के दौरान और भी गंभीर था जब एमएस-डॉस 8.3 फाइलनाम तक सीमित था । इसलिए, रिक्त स्थान छोड़ने से आप नाम में अधिक सार्थक अक्षर डाल सकते हैं।
कई अन्य फ़ाइल सिस्टम ने भी अपनी फ़ाइल नाम लंबाई पर सख्त सीमाएँ निर्धारित की हैं। विकिपीडिया में विवरण के लिए फाइल सिस्टम की तुलना में एक तालिका है जो विवरण चाहते हैं।
आरक्षित वर्ण
MS-DOS ने अंतरिक्ष वर्ण को एक आरक्षित वर्ण के रूप में भी परिभाषित किया। यह इस तथ्य के कारण है कि एफएटी में पैडिंग के लिए अंतरिक्ष वर्ण का उपयोग किया गया था । इसके अतिरिक्त, MS-DOS ने शेल में भागने की व्यवस्था के लिए प्रदान नहीं किया।
कमांड-लाइन व्याख्या
अधिकांश कमांड-लाइन मैं एक पैरामीटर सीमांकक के रूप में अंतरिक्ष चरित्र का उपयोग करने के बारे में पता कर रहा हूँ । जब किसी फ़ाइल नाम से ठीक से बचने की उपेक्षा की जाती है, तो इसके भयानक परिणाम हो सकते हैं क्योंकि फ़ाइलनाम के कुछ हिस्सों की व्याख्या उस अनुप्रयोग के मापदंडों के रूप में की जा सकती है जिसे आप कॉल करना चाहते थे।
के बीच अंतर पर विचार करें
rm foo bar
तथा
rm "foo bar"
विकीपीडिया लेख ऊपर से जुड़ा हुआ है, यहां तक कि अस्पष्टता से एक आदेश से ठीक से बचने के लिए लापता होने की शुरुआत की गई है:
अस्पष्टता को या तो फ़ाइल- और निर्देशिका नामों में फ़ाइल में एम्बेडेड स्पेस को रोककर रोका जा सकता है (उदाहरण के लिए, उन्हें अंडरस्कोर '_' के साथ प्रतिस्थापित करके), या, यदि कमांड-लाइन दुभाषिया और इन मापदंडों के रूप में लेने वाले कार्यक्रमों द्वारा समर्थित किया गया हो तर्क, उद्धरण वर्णों के बीच एम्बेडेड रिक्त स्थान के साथ एक नाम संलग्न करके या अंतरिक्ष से पहले एक भागने चरित्र का उपयोग करके, आमतौर पर एक बैकस्लैश ('\')। उदाहरण के लिए
Long path/Long program name Parameter one Parameter two ...
अस्पष्ट है ("प्रोग्राम का नाम" प्रोग्राम के नाम का हिस्सा है, या दो पैरामीटर हैं?); हालाँकि
Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...
और लॉन्ग \ पाथ / लॉन्ग \ प्रोग्राम \ नाम पैरामीटर \ एक पैरामीटर \ दो ...
अस्पष्ट नहीं हैं।
यूनिफ़ॉर्म रिसोर्स लोकेटर (URL)
जब URL का उपयोग करके किसी फ़ाइल के स्थान का वर्णन करने का प्रयास किया जाता है, तो रिक्त स्थान से बचने की आवश्यकता होती है।
वर्ण कई कारणों से असुरक्षित हो सकते हैं। अंतरिक्ष वर्ण असुरक्षित है क्योंकि महत्वपूर्ण स्थान गायब हो सकते हैं और महत्वहीन स्थान तब पेश किए जा सकते हैं जब URL को स्थानांतरित या टाइपसेट या वर्ड-प्रोसेसिंग कार्यक्रमों के उपचार के अधीन किया जाता है।
स्रोत: RFC1738
इस प्रकार, एक स्थान को बदले के साथ प्रतिस्थापित किया जाना है %20
। यह URL के फ़ाइल नाम को कम पठनीय बनाता है और इस प्रकार, लोगों को पहली बार में इससे बचता है।