सवाल लिनक्स / विंडोज / यूनिक्स / ... फ़ाइल नाम: कौन से पात्रों की अनुमति है? कौन से बच निकले हैं?


कौन से पात्रों की अनुमति है और उनमें से कौन से विभिन्न ऑपरेटिंग सिस्टम में कमांड लाइन से बच जाना चाहिए?


39
2018-06-12 21:24


मूल


नीचे कुछ उपयोगी उत्तर दिए गए हैं, लेकिन आप क्या हासिल करने की कोशिश कर रहे हैं? अपने चरित्र को कोडिंग करना सफेद-लिस्टिंग दिनचर्या शायद सबसे अच्छा मार्ग नहीं है। - medina
सभी को धन्यवाद! सभी उत्तर उपयोगी हैं। मुझे इसके लिए जानकारी की आवश्यकता है: मैं एक उपकरण लिख रहा हूं जो फाइलों के दौरान फ़ाइलों को टैग करेगा, उनके नामों को बदलकर (कोई मेटाडाटा नहीं)। - java.is.for.desktop
जवाब भी देखें सुपर उपयोगकर्ता। - pevik


जवाब:


विकिपीडिया लेख में फ़ाइल नाम पात्रों की चर्चा है फ़ाइल नाम

आपको यह निबंध जानकारीपूर्ण मिल सकता है: यूनिक्स / लिनक्स / पॉज़िक्स फ़ाइल नाम फिक्सिंग

यह आलेख ओएस एक्स और विंडोज एक्सपी की तुलना करता है: एक्स बनाम XP: फ़ाइल नामों में निषिद्ध वर्ण (पीडीएफ, पीपी लगभग 64-66 देखें)।

$ 1,000 एलेक्स के लिए फाइल नामों में नहीं होना चाहिए चीजें

मुझे नहीं पता कि कौन से पात्र होना चाहिए संयुक्त राष्ट्रसे बच निकला, लेकिन लिनक्स में, शायद उन पात्रों से बचने का अच्छा विचार नहीं है जिनके पास विशेष अर्थ हो सकता है जैसे कि "एन" (न्यूलाइन), "टी" (टैब) और अन्य, लेकिन आमतौर पर फाइल ऑपरेशंस में कोई समस्या नहीं है। शायद आप "अनचाहे" के बजाय "भाग गए" का मतलब है। सबसे आम लोग हैं कि शैल अंतरिक्ष, ">", "<" इत्यादि की व्याख्या करेगा। उन कुछ लेखों को देखें जिन्हें मैंने चर्चा की थी।


26
2018-06-12 22:29



यह वास्तव में एक जवाब नहीं है - सभी जानकारी बाहरी है। और उनमें से कुछ लिंक अब टूट गए हैं। - Steve Bennett


* निक्स में फ़ाइल नाम में अनुमति देने वाले एकमात्र वर्ण हैं NUL तथा /। विंडोज़ में, केवल NUL, :, तथा \ वास्तव में अनुमति नहीं है, लेकिन कई ऐप्स इसे और भी प्रतिबंधित करते हैं, इसे रोकते हैं ?, *, +, तथा %

किसी भी समय फ़ाइल नाम में कोई भी वर्ण नहीं है जरुरत खोल से व्याख्या नहीं करने के लिए आवश्यकतानुसार बचने के लिए बचें।


24
2018-06-12 22:27



दूसरा बिंदु जोर देने योग्य है। आम तौर पर, "भागने" से एक शेल तंत्र को संदर्भित किया जाता है जो उपयोगकर्ता को स्ट्रिंग्स (उदा। पथनाम) निर्दिष्ट करने की अनुमति देता है जिसमें वे अक्षर होते हैं जो शैल अन्यथा विशेष तरीके से व्यवहार करते हैं। यदि ओपी का मतलब अन्यथा अस्वीकृत वर्णों को एन्कोड करने के लिए "प्रतिशत एन्कोडिंग" जैसे कुछ का उपयोग करना है, तो यह एक पूर्ण रूप से अनुप्रयोग स्तर "पथनाम प्रोटोकॉल" है जिसमें प्रत्येक शामिल कार्यक्रम को अपनाना चाहिए (या नहीं)। - Chris Johnsen
मैं readdir के साथ एक फ़ोल्डर स्कैन कर रहा हूं फिर फ़ाइलों को वापस आने वाले नामों को खोलने की कोशिश कर रहा हूं। उनमें से कुछ ईनोन्ट के साथ खुलने में विफल रहते हैं जो ओएस के लिए भी कभी-कभी आपको बचाना पड़ता है? - gman


यदि आप निम्न वर्णों में से किसी एक का उपयोग कर एक्सप्लोरर के साथ विंडोज़ पर एक फाइल बनाते हैं, तो यह शिकायत करेगा कि पात्रों की अनुमति नहीं है:

\ / : * ? " < > |

एक अच्छा संदर्भ यहां है:

नामकरण फ़ाइलें, पथ, और नामस्थान
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx 

माइक्रोसॉफ्ट आगे बताता है:

"... विंडोज-आधारित डेस्कटॉप प्लेटफ़ॉर्म पर, अमान्य पथ वर्णों में एएससीआईआई / यूनिकोड वर्ण 1 से 31, साथ ही उद्धरण ("), (<) से अधिक (>), पाइप (|), बैकस्पेस शामिल हो सकता है (\ बी), शून्य (\ 0) और टैब (\ t)। "

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx 


12
2018-06-12 23:08



मुझे कुछ साल पहले पढ़ना याद है कि उपयोगकर्ता-मोड विंडोज़ में उन प्रतिबंधों के साथ-साथ केस-असंवेदनशील ("एबीसी.txt" === "abc.txt") भी है। हालांकि, कर्नेल-मोड विंडोज के पास कम प्रतिबंध हैं और केस-संवेदी ("एबीसी.txt"! == "abc.txt" बस * NIX की तरह है)। सभी उद्देश्यों और उद्देश्यों के लिए, उपरोक्त वर्ण अधिकांश कार्यक्रमों पर लागू होंगे क्योंकि वे उपयोगकर्ता-मोड में चलते हैं। - CubicleSoft


लिनक्स और अन्य POSIX संगत सिस्टम पर, "/" आरक्षित है क्योंकि यह निर्देशिका विभाजक है, और "\ 0" (नल वर्ण) स्ट्रिंग के अंत को निर्दिष्ट करता है। बाकी सब कुछ की अनुमति है।


4
2018-06-12 22:27



हालांकि यह नई लाइनों, टैब, नियंत्रण वर्णों, और इसी तरह से बचने के लिए अत्यधिक अनुशंसा करता है, और यह सुनिश्चित करने के लिए कि फ़ाइल नाम मान्य यूटीएफ -8 है। - Flimm