फ़ाइल नाम में नईं


24

मैं समझता हूं और इस आधार को स्वीकार करता हूं कि रक्षात्मक 1 शेल स्क्रिप्टिंग विवेकपूर्ण और लंबी अवधि में अधिक टिकाऊ है।

पाठ प्रसंस्करण सवालों के जवाब के कई अपरंपरागत फ़ाइल नाम के लिए उत्तर आकस्मिकता में निर्माण करके इस सिद्धांत का पालन करते हैं; जिसमें स्थान, डैश और नई लाइनें हो सकती हैं।

फ़ाइल नाम में नई लाइनें कितनी प्रचलित हैं? विशेष रूप से:

  • क्या कोई भी एप्लिकेशन ऐसे फ़ाइलनाम बनाता है जिसमें डिफ़ॉल्ट रूप से नई सूची शामिल होती है?
  • क्या ऐसी कोई परिस्थितियां हैं, जहां इस तरह के फ़ाइल नाम बनाना वांछनीय होगा?
  • या वे मुख्य रूप से उपयोगकर्ता त्रुटि का एक उदाहरण हैं?

[१] मतलब परिदृश्यों और आकस्मिकताओं की व्यापक संभव सीमा के प्रबंधन की योजना बनाना ...

इस प्रश्न पर (बल्कि वादी) टिप्पणी से प्रेरित प्रश्न


4
संक्षिप्त उत्तर विचित्र फिल्म्स है जिसमें नईलाइन और / या अप्रमाणित अक्षर अच्छे अभ्यास नहीं हैं, समझदार ऐप्स उन्हें नहीं बनाते हैं, और आप वास्तव में केवल उन्हें देखते हैं यदि कोई आपकी शेल स्क्रिप्ट या प्रोग्राम को तोड़ने की कोशिश कर रहा है जो ऐसे नामों को सही तरीके से नहीं संभालता है। मैं अन्य लोगों को संदर्भों और इस तरह के साथ अधिक विस्तृत उत्तर प्रदान करने देता हूँ।
jw013

जवाबों:


26

मैंने फ़ाइल नाम में हेरफेर करने वाले एप्लिकेशन का परीक्षण करने के लिए जानबूझकर बनाई गई एक नई पंक्ति के साथ फ़ाइल नाम नहीं देखा है। नए नामों वाली फ़ाइल नाम दिखाई दे सकते हैं क्योंकि:

  • कुछ बग या उपयोगकर्ता त्रुटि (जैसे एक खराब कॉपी-पेस्ट) एक अनजाने फ़ाइल नाम के परिणामस्वरूप।
  • कुछ फ़ाइल सिस्टम भ्रष्टाचार ने फ़ाइल नाम को प्रभावित किया है।
  • किसी ने जानबूझकर एक "अजीब" फ़ाइल नाम बनाया है ताकि एक सुरक्षा छेद का उपयोग किया जा सके, जहां एक एप्लिकेशन ने फाइल के नामों पर अधिक भरोसा किया, जो इसे होना चाहिए था।

POSIX एक फ़ाइलनाम को परिभाषित करता है "एक नाम जिसमें 1 से {NAME_MAX} बाइट्स हैं जो एक फ़ाइल का नाम है। नाम की रचना करने वाले वर्णों को स्लैश वर्ण और अशक्त बाइट को छोड़कर सभी वर्ण मानों के सेट से चुना जा सकता है। फ़ाइल नाम डॉट और डॉट-डॉट विशेष अर्थ नहीं होता। अजीब "फ़ाइल नाम (केवल" कोई गारंटी नहीं कि हर फाइल सिस्टम को स्वीकार करेंगे नहीं है " गारंटी चरित्र ASCII अक्षरों, अंकों, अवधि, हाइफ़न और अंडरस्कोर , यानी A-Z, a-z, 0-9और ._-, हाइफ़न से पहले स्थान पर निषिद्ध), लेकिन आधुनिक यूनियनों पर अधिकांश देशी फाइल सिस्टम हैं।


तो spacesफ़ाइल नाम में पोर्टेबल होने की गारंटी नहीं है? यदि आप स्पष्ट करते हैं कि अंतिम तीन वर्ण हैं तो यह सहायक होगा period, underscore, and hyphen। रेखांकित लिंक के साथ, यह बताना मुश्किल है।
टॉक्सालॉट

4
@toxalot नहीं, रिक्त स्थान पोर्टेबल होने की गारंटी नहीं है, न ही ,(RCS द्वारा उपयोग किया जाता है), :(X.org द्वारा उपयोग किया जाता है), ~(बैकअप फ़ाइलों पर कई कार्यक्रमों द्वारा उपयोग किया जाता है) ... लेकिन वे लगभग सभी आधुनिक प्रणालियों द्वारा समर्थित हैं।
गिल्स एसओ- बुराई को रोकना '

22

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

IMHO एक मानक के लिए कोडिंग के बारे में 'रक्षात्मक' कुछ भी नहीं है .. एक मानक जो बताता है कि फ़ाइल नाम में नई सूचियों की अनुमति है। यदि आपकी स्क्रिप्ट मानक में अनुमत सभी फ़ाइल नामों को संभालती नहीं है, तो आपकी स्क्रिप्ट टूट गई है।


2
वास्तविक दुनिया उदाहरण के लिए धन्यवाद; यह मानक के बारे में आपकी बात को काफी हद तक रेखांकित करता है ...
jasonwryan

6
+1 के लिए "यदि आपकी स्क्रिप्ट मानक में अनुमत सभी फ़ाइल नामों को संभालती नहीं है, तो आपकी स्क्रिप्ट टूट गई है " (जोर दिया गया)
jw013


Across, मैं बिल्कुल इसी कारण से इस पद पर आया था! बस यह पता लगाने की कोशिश कर रहा है कि रिक्त स्थान पर newlines को बदलने के लिए एक कमांड कैसे लिखें।
हाय-एंजेल

2

मैंने कभी नहीं देखा है कि NORMAL उपयोगकर्ता फ़ाइलनामों में नई लाइनों का उपयोग करते हैं। ऐसा प्रतीत होता है कि उनका प्राथमिक उद्देश्य (1) हमलावरों के लिए आपके सिस्टम को अलग करना आसान बनाता है, और (2) सुरक्षित प्रोग्राम लिखना कठिन बना देता है :-( हालांकि, आधुनिक यूनिक्स-लाइक (जैसे लिनक्स) की अनुमति देते हैं। , इसलिए आपको उनके लिए तैयार करना होगा यदि आप एक प्रोग्राम चाहते हैं जो हमले का प्रतिरोध करता है।

"शैल में फ़ाइलनाम और पथनाम: इसे सही तरीके से कैसे करें" यह दिखाता है कि इसे सही तरीके से कैसे संभालना है।


मैं एक सामान्य उपयोगकर्ता हूं और मेरे फ़ाइल नामों में नए अंक हैं। @Sml के उत्तर में बताया गया परिदृश्य मेरे लिए एक से अधिक बार हुआ। मेरे लिए दिलचस्प यह है कि "सिस्टम को सबवर्ट करने के लिए" फ़ाइल नाम में एक नई लाइन का उपयोग कैसे किया जा सकता है? क्या आपके पास कोई सूत्र है जो समझा रहा है?
जोसेफ आर।

@JosephR। मैं एक प्रणाली से समझौता करने का तरीका नहीं सोच सकता, लेकिन आप इसे उन अनुप्रयोगों के लिए डॉस के रूप में उपयोग कर सकते हैं जो न तो नई लाइनों (और इसके बजाय दुर्घटना) को
संभालते हैं
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.