स्टीफन किट का जवाब क्या है और मैं कवर करने की कोशिश करूंगा कि यह बदलाव क्यों लागू किया गया। सबसे पहले, किसी ने देखा कि newlines 1 नाम वाला फ़ाइल नाम अस्पष्ट आउटपुट में परिणाम कर सकता है । उदाहरण के लिए, इस आउटपुट पर विचार करें:
d41d8cd98f00b204e9800998ecf8427e foo
25af89c92254a806b2e93fffd8ac1814 bar
क्या इसका मतलब यह है कि दो फाइलें थीं foo
और bar
केवल एक फाइल किसका फाइलनेम है "foo\n25af89c92254a806b2e93fffd8ac1814 bar"
? दी गई, यह बाद की संभावना अत्यधिक संभावना नहीं है, लेकिन यह संभव है। अस्पष्टता को हल करने के लिए डेवलपर्स ने बैकस्लैश ( \
) के साथ नई कहानियों से बचने के लिए चुना । तब आउटपुट अलग-अलग हो जाता है। हालांकि, फिर एक और अस्पष्टता है:
764efa883dda1e11db47671c4a3bbd9e foo\nbar
क्या इस फ़ाइल के नाम में एक नई पंक्ति, या एक बैकस्लैश है जिसके बाद a है n
? इसे हल करने के लिए हमें बैकस्लैश से भी बचना होगा, ताकि बाद वाला मामला बन जाए:
764efa883dda1e11db47671c4a3bbd9e foo\\nbar
अंत में, उन्होंने प्रत्येक आउटपुट लाइन को तैयार करने के लिए चुना, जिसमें एगर के साथ इस तरह के पलायन होते हैं जिससे पार्सर के लिए यह पता लगाना \\
आसान हो जाता है कि क्या बच गया है। संभवत: ऐसा पार्सर्स को गैर-भागने वाले संस्करणों (गैर-जीएनआर) से बचने के संस्करणों से आउटपुट को संभालने की अनुमति देने के लिए किया गया था । ध्वज का अर्थ यह भी है कि "महंगा" संयुक्त राष्ट्र से बचने की आवश्यकता नहीं होने पर करने की आवश्यकता नहीं है। आप अपने आप में कार्रवाई में इस पार्सिंग का एक उदाहरण देख सकते हैं (लिंक किए गए संस्करण में लाइन 382)।md5sum
md5sum.c
1 से न्यू लाइन मैं चरित्र मतलब \n
है जो कभी कभी भी विशेष रूप से एक के रूप में जाना जाता है linefeed या वामो ; देखते हैं md5sum.c
।
*sum
उपयोगिताओं (जैसेmd5sum
, ई, जी,sha1sum
आदि के समान परिवार ) का उपयोग करता है।