कल मैंने एसओ की यह टिप्पणी पढ़ी जो कहती है कि शेल (कम से कम bash
) >&-
"के समान परिणाम है" >/dev/null
।
यह टिप्पणी वास्तव में अपनी जानकारी के स्रोत के रूप में ABS गाइड को संदर्भित करती है। लेकिन उस स्रोत का कहना है कि >&-
वाक्यविन्यास "फ़ाइल डिस्क्रिप्टर को बंद करता है"।
यह मेरे लिए स्पष्ट नहीं है कि क्या फाइल डिस्क्रिप्टर को बंद करने और इसे शून्य डिवाइस पर पुनर्निर्देशित करने की दो क्रियाएं पूरी तरह से बराबर हैं। तो मेरा सवाल है: क्या वे हैं?
इसकी सतह पर ऐसा लगता है कि एक डिस्क्रिप्टर को बंद करना एक दरवाजे को बंद करने जैसा है, लेकिन इसे एक अशक्त डिवाइस पर पुनर्निर्देशित करना लिम्बो के लिए एक दरवाजा खोल रहा है! दोनों मुझे बिल्कुल एक जैसे नहीं लगते क्योंकि अगर मुझे एक बंद दरवाजा दिखाई देता है, तो मैं इसमें से कुछ भी बाहर फेंकने की कोशिश नहीं करूंगा, लेकिन अगर मैं एक खुला दरवाजा देखता हूं तो मैं मान लूंगा।
दूसरे शब्दों में, मुझे हमेशा आश्चर्य होता >/dev/null
है कि cat mybigfile >/dev/null
क्या इसका मतलब है कि वास्तव में फ़ाइल के हर बाइट को संसाधित करेगा और इसे लिख देगा /dev/null
जो इसे भूल जाता है। दूसरी ओर, यदि शेल एक बंद फाइल डिस्क्रिप्टर से सामना करता है तो मैं सोचता हूं (लेकिन मुझे यकीन नहीं है) कि यह बस कुछ भी नहीं लिखेगा, हालांकि सवाल यह है कि क्या cat
अभी भी हर बाइट को पढ़ा जाएगा ।
यह टिप्पणी कहती है >&-
और >/dev/null
" होना चाहिए " समान है, लेकिन यह मेरे लिए इतना शानदार जवाब नहीं है। मैं मानक या स्रोत कोर या नहीं के कुछ संदर्भ के साथ अधिक आधिकारिक जवाब देना चाहूंगा ...