फ़ाइल नामों में स्थान वर्णों का उपयोग न करने के लिए क्या तकनीकी कारण मौजूद हैं?


75

मैं जानता हूँ कि हममें से कुछ लोगों ने आज भी उन लोगों के बारे में जलन व्यक्त की है जो हमारे फाइलनाम में रिक्त स्थान का उपयोग नहीं करते हैं, उदाहरण के लिए NamingThingsLikeThis.txt- अधिकांश आधुनिक ऑपरेटिंग सिस्टम के बावजूद फ़ाइलनामों में रिक्त स्थान का समर्थन करते हैं।

क्या ऐसे तकनीकी कारण हैं जो अभी भी (उपयुक्त) रिक्त स्थान के बिना फ़ाइल नाम देखना आम है? यदि हां, तो ये कौन से तकनीकी कारण हैं कि फाइलनामों में रिक्त स्थान से बचा जाता है या हतोत्साहित किया जाता है, और वे किन परिस्थितियों में प्रासंगिक हैं?

सबसे स्पष्ट कारण जिसके बारे में मैं सोच सकता था, और मैं आमतौर पर इससे बचता हूं, ऐसी फ़ाइलों से निपटने के दौरान कमांड लाइन पर अतिरिक्त उद्धरण आवश्यक हैं। क्या कोई अन्य महत्वपूर्ण तकनीकी कारण हैं?


जैसा कि आपने कहा, वे कमांड लाइन पर निपटने के लिए बहुत आसान हैं। और प्रोग्रामिंग के लिए मुझे यकीन नहीं है कि अगर फ़ाइल नाम में रिक्त स्थान का उपयोग करना संभव है या संभव है।
एल्विन रो

जवाबों:


65

फ़ाइल नाम में व्हॉट्सएप वर्ण कमांड लाइन पर कई संदर्भों में लौकिक में एक सही शाही दर्द हो सकता है, और लिपियों में, जहां आपको यह सुनिश्चित करने के लिए सावधान रहना होगा कि वे ठीक से बच गए हैं ताकि कमांड के लिए विभाजक की तरह न दिखें चल रहा है।

यह सिर्फ वहां सुरक्षित नहीं है, भले ही आप सुनिश्चित करें कि फ़ाइल / डीआईआर / क्या-क्या कभी भी इस तरह के संदर्भ में उपयोग नहीं किया जाएगा।

वह, और पुरानी आदतें मुश्किल से मरती हैं।


वे भी एक सही शाही दर्द से निपटने के लिए तो आप पथ रचना और उन्हें संशोधित करने के लिए है। यह सुनिश्चित करना कि घटकों को फिर से बचना / फिर से उद्धृत करने से पहले संशोधन के लिए unquoted और unescaped हैं, खासकर अगर टुकड़ों को कोड के अन्य बिट्स में हेरफेर करने के लिए भेज दिया जाता है।
१०:१५ से १५:१५

2
यदि आपको लगता है कि रिक्त स्थान खराब हैं, तो '\n'उनके नाम की नई लाइनों ( ) के साथ फ़ाइलों से निपटने का प्रयास करें । (यूनिक्स जैसी प्रणाली वास्तव में इसकी अनुमति देती है; विंडोज आम तौर पर, या कम से कम इसे मुश्किल बना देती है।)
कीथ थॉम्पसन

30

कमांड लाइन और पुरानी आदतों के बारे में अन्य उत्तरों के अलावा, कई नेटवर्क प्रोटोकॉल भी हैं जिन्हें रिक्त स्थान वाले फ़ाइलनाम से निपटने के दौरान विशेष देखभाल की आवश्यकता होती है।

(यदि आपने कभी किसी वेबसाइट से "उत्पाद List.pdf" डाउनलोड करने का प्रयास किया है, और "उत्पाद" नामक एक फ़ाइल के साथ समाप्त हो गया है, तो आपको इस पर काट दिया गया, क्योंकि दूसरे छोर पर प्रोग्रामर को पता नहीं था या नहीं http कंटेंट-डिस्पोजल हैडर के लिए उद्धृत नियमों का पता न लगाएं।)


11
+1। एक शुरुआत के लिए HTTP। URL में रिक्त स्थान (किसी भी प्रोटोकॉल के लिए, न केवल HTTP) को% 20 या + से बचा जाना चाहिए। भ्रम पैदा हो सकता है जब उन्हें एन्कोड नहीं किया जाना चाहिए जैसा कि होना चाहिए। वेब पृष्ठों के लिए दोनों स्थानों से बचने के लिए एक दृश्य कारण है और अंडरस्कोर ("_") जो आमतौर पर उन्हें बदलने के लिए उपयोग किया जाता है - वे दोनों एक रेखांकित लिंक में समान दिख सकते हैं, इसलिए कोई व्यक्ति मैन्युअल रूप से लिंक को कॉपी कर सकता है या किसी को पढ़ सकता है। यह गलत है।
डेविड स्पिललेट 13

5
URL में एन्कोड किए जाने वाले रिक्त स्थान के बारे में सबसे अधिक कष्टप्रद चीजों में से एक यह है कि कुछ सॉफ़्टवेयर के लिए रिक्त स्थान को एन्कोडेड रखने की प्रवृत्ति है ...
SamB

क्या यह असली है? 2018 में ऐसा होता है?
क्रिस कैलो

@ChrisCalo आप देख सकते हैं कि यह जवाब 2009 में दिया गया था, 2018 में नहीं। लेकिन, हाँ, यह अभी भी 2018 में होता है। संभवतः कम बार, अब यह है कि ज्यादातर बदमाश डेवलपर्स खरोंच से सब कुछ करने के बजाय वेबसाइट बनाने के लिए फ्रेमवर्क का उपयोग करते हैं, लेकिन यह अभी भी है एक मुद्दा।
स्टोबोर

28

बहुत सारे कारण ऐतिहासिक हैं। इसका मतलब यह नहीं है कि वे आज समझ में नहीं आता है।

पोर्टेबिलिटी में समस्याएँ

किसी फ़ाइल का नामकरण करते समय, आपको यह भी विचार करना पड़ सकता है कि अन्य (फ़ाइल) सिस्टम उस फ़ाइल नाम के साथ कैसे व्यवहार करेंगे। फ़ाइल नाम का एक वर्ण आपके सिस्टम के लिए ठीक हो सकता है, लेकिन यह किसी अन्य सिस्टम के लिए एक समस्या हो सकती है।

इसलिए, जब तक कि थोड़ी सी भी संभावना नहीं थी कि आप एक पुराने सिस्टम से आसानी से फ़ाइल तक पहुंचने में सक्षम हो सकते हैं, आप अपना सुरक्षित चरित्र चुन लेंगे । इसमें एक पुरानी पुनर्प्राप्ति प्रणाली शामिल हो सकती है जिसे आपने आसपास रखा है या यह डर है कि हाल के विंडोज संस्करण अभी भी किसी तरह एमएस-डॉस पर आधारित हैं।

लंबाई

एक फ़ाइल सिस्टम एक फ़ाइल की लंबाई को सीमित कर सकता है। यह उन दिनों के दौरान और भी गंभीर था जब एमएस-डॉस 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 के फ़ाइल नाम को कम पठनीय बनाता है और इस प्रकार, लोगों को पहली बार में इससे बचता है।


25

रिक्तियाँ %20वेब पर फ़ाइल नामों में एन्कोडेड या परिवर्तित हो जाती हैं, जिससे साइट की संपत्ति का प्रबंधन करना कठिन हो सकता है।

होने Image 1.pngऔर Image%201.pngभ्रामक है। इसके Image001.pngबजाय उपयोग करना आसान है ।

यह वास्तव में कमांड लाइन के लिए एस्केप सीक्वेंस के समान श्रेणी में आता है।


5

कभी-कभी, रिक्त स्थान कमांड लाइन पर काम करते समय, या पुराने ओएस के उपयोग करते समय, या जब अलग-अलग ओएस पर संकलित किए जाने वाले प्रोग्राम लिखते हैं, या जब ... कई कारण होते हैं जो समस्याग्रस्त पेश कर सकते हैं, और मैं डॉन ' t वास्तव में ऐसा लगता है कि फ़ाइल को लिखना इस तरह की परेशानी है: file-without-blanks.txt या file_without_blanks.txt । मैं डस्क पसंद करता हूं क्योंकि अंडरस्कोर कभी-कभी अदृश्य हो सकता है, उदाहरण के लिए, रेखांकित फ़ॉन्ट।

लेकिन ज्यादातर, यह पुराने समय से आदत की बात है। जो मुझे नहीं लगता कि छोड़ने के लिए पर्याप्त समर्थक कारण हैं।


एक अतिरिक्त नोट, संभवतः संबंधित नहीं है, लेकिन फिर भी मैं इसे यहां रखूंगा। जो लोग अपनी फ़ाइलों को रिक्त स्थान के साथ नाम देते हैं, वे आमतौर पर इसके बारे में ज्यादा नहीं सोचते हैं; जिन लोगों को अक्सर यह नहीं पता होता है कि फिल्नाम में उनसे बचना क्यों अच्छा है।
और, हम सभी सहमत हो सकते हैं, एक फ़ाइल से भी बदतर कुछ भी नहीं है जिसका नाम है "प्रिय महोदय या महोदया, मैं आपको यह पत्र लिख रहा हूं ताकि आप yo.doc को सूचित कर सकें"।

न केवल रिक्त स्थान - फ़ाइल की लंबाई भी कुछ के लिए मायने रखती है, और IMHO, यह अब से नहीं होना चाहिए, चलो कहते हैं, 30 वर्ण। सीडी के साथ रिकॉर्डिंग के दौरान अंदर के रिक्त स्थान के नाम भी एक आशीर्वाद हैं, डीवीडी और ऐसे जिन्हें पुराने ओएस के तहत पढ़ने की आवश्यकता होती है, और विन और * निक्स पट्टिकाओं के बीच में।


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