POSIX एक पाठ फ़ाइल को परिभाषित करता है:
एक फ़ाइल जिसमें वर्ण शून्य या अधिक लाइनों में व्यवस्थित होते हैं। लाइनों में NUL वर्ण नहीं हैं और कोई भी <newline> वर्ण सहित लंबाई में {LINE_MAX} बाइट्स से अधिक नहीं हो सकता है। यद्यपि POSIX.1-2017 पाठ फ़ाइलों और बाइनरी फ़ाइलों (आईएसओ सी मानक देखें) के बीच अंतर नहीं करता है, कई उपयोगिताओं केवल पाठ फ़ाइलों पर काम करते समय अनुमानित या सार्थक आउटपुट उत्पन्न करती हैं। मानक उपयोगिताओं जिनके पास इस तरह के प्रतिबंध हैं, हमेशा अपने STDIN या INPUT FILES अनुभागों में "पाठ फ़ाइलों" को निर्दिष्ट करते हैं।
स्रोत: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
हालांकि, ऐसी कई चीजें हैं जो मुझे अस्पष्ट लगती हैं:
पाठ फ़ाइल एक नियमित फ़ाइल होनी चाहिए? उपरोक्त अंश में यह स्पष्ट रूप से नहीं कहा गया है कि फ़ाइल एक नियमित फ़ाइल होनी चाहिए
क्या एक फ़ाइल को एक पाठ फ़ाइल माना जा सकता है यदि केवल एक वर्ण और एक वर्ण होता है (यानी, एक एकल वर्ण जिसे एक नई पंक्ति के साथ समाप्त नहीं किया जाता है)? मुझे पता है कि यह सवाल ध्वनिविहीन लग सकता है, लेकिन वे "एक या अधिक वर्ण" के बजाय "वर्ण" शब्द का उपयोग करते हैं। अन्य लोग असहमत हो सकते हैं, लेकिन अगर उनका मतलब "एक या अधिक वर्णों" से है, तो मुझे लगता है कि उन्हें स्पष्ट रूप से कहना चाहिए
उपरोक्त अंश में, यह "लाइनों" का संदर्भ देता है। मुझे उनके नाम में लाइन के साथ चार परिभाषाएँ मिलीं: "खाली लाइन", "डिस्प्ले लाइन", "अधूरी लाइन" और "लाइन"। क्या मुझे यह अनुमान लगाना चाहिए कि "खाली", "प्रदर्शन" और "अपूर्ण" के अपने चूक के कारण उनका मतलब "रेखा" है - या इन सभी परिभाषाओं में से चार समावेशी हैं जो ऊपर दिए गए अंश में एक पंक्ति मानी जा रही हैं?
पाठ के इस ब्लॉक के बाद आने वाले सभी प्रश्न इस बात पर निर्भर करते हैं कि "वर्ण" का अर्थ है "एक या अधिक वर्ण"
- क्या मैं सुरक्षित रूप से अनुमान लगा सकता हूं कि यदि कोई फ़ाइल खाली है, तो यह एक पाठ फ़ाइल नहीं है क्योंकि इसमें एक या अधिक वर्ण नहीं हैं?
पाठ के इस ब्लॉक के बाद आने वाले सभी प्रश्न इस बात पर निर्भर करते हैं कि उपरोक्त अंश में, एक रेखा को "रेखा" के रूप में परिभाषित किया गया है, और यह कि उनके नाम में "रेखा" वाली अन्य तीन परिभाषाओं को बाहर रखा जाना चाहिए:
क्या "शून्य" "शून्य या अधिक लाइनों" में होने का मतलब है कि एक फ़ाइल को अभी भी एक पाठ फ़ाइल माना जा सकता है यदि इसमें एक या एक से अधिक वर्ण शामिल हैं जिन्हें नईलाइन के साथ समाप्त नहीं किया गया है?
क्या "शून्य या अधिक रेखाएं" का अर्थ है कि एक बार एक "लाइन" (0 या अधिक वर्णों और एक समाप्ति वाली नई रेखा) खेलने में आती है, कि यह अंतिम पंक्ति के लिए "अपूर्ण रेखा" (एक या अधिक गैर-) होना अवैध हो जाता है एक फ़ाइल के अंत में newline वर्ण)?
क्या "कोई भी [कोई भी रेखा] {LINE_MAX} बाइट्स को लंबाई में शामिल नहीं कर सकती है, जिसमें न्यूलाइन वर्ण भी शामिल है" का अर्थ है कि पाठ फ़ाइल में किसी भी "लाइन" में अनुमत वर्णों की संख्या तक सीमा (एक तरफ के रूप में, का मान) Ubuntu 18.04 पर LINE_MAX और फ्रीबीएसडी 11.1 "2048" है)?