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


43

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


नीचे कुछ उपयोगी उत्तर दिए गए हैं, लेकिन आप क्या हासिल करने की कोशिश कर रहे हैं? अपने स्वयं के चरित्र-श्वेत-सूची वाले रूटीन को कोड करना शायद सबसे अच्छा मार्ग नहीं है।
मदिना

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

सुपरसुसर पर भी जवाब देखें ।
पिविक

जवाबों:


26

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

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

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

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

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


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

26

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

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


दूसरा बिंदु जोर का हकदार है। आमतौर पर, "बचना" एक शेल मैकेनिज्म को संदर्भित करता है, जो उपयोगकर्ता को ऐसे तार (जैसे पाथनाम) को निर्दिष्ट करने की अनुमति देता है जिसमें वर्ण होते हैं जो शेल अन्यथा एक विशेष तरीके से व्यवहार करेगा। यदि ओपी का अर्थ है कि "प्रतिशत एन्कोडिंग" जैसी किसी चीज़ का उपयोग करना अन्यथा वर्णों को अस्वीकृत करना है, तो यह विशुद्ध रूप से अनुप्रयोग स्तर "पथनाम प्रोटोकॉल" है जिसे प्रत्येक शामिल प्रोग्राम को अपनाना चाहिए (या नहीं)।
क्रिस जॉन्सन

मैं रीडिर के साथ एक फ़ोल्डर को स्कैन कर रहा हूं, फिर फाइलों को खोलने के लिए कोशिश कर रहा हूं, इसके नाम के साथ। उनमें से कुछ ENOENT के साथ खोलने में विफल रहते हैं जो ओएस के लिए भी सुझाव देता है कि कभी-कभी आपको बचना होगा?
5

13

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

\ / : * ? " < > |

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

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

Microsoft आगे बताता है:

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

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


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

मैं उन \ / : * ? " < > |सभी से बच सकता हूं, और उन्हें अपने GNU / लिनक्स सिस्टम पर mkdir के साथ बना सकता हूं। आप निर्देशिका mkdir '?'बनाने के लिए भी उपयोग कर सकते हैं ?। मैंने परीक्षण करने के लिए रैमडिस्क और एक्सएफएस फाइल सिस्टम का उपयोग किया है।
एस। गोस्वामी

5

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


1
हालांकि यह नई कहानियों, टैब, नियंत्रण पात्रों और इस तरह से बचने के लिए अत्यधिक अनुशंसा करता है, और यह सुनिश्चित करने के लिए कि फ़ाइल नाम मान्य UTF-8 है।
फ्लिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.