पुनर्निर्देशन संचालन <
, >
, आदि खोल द्वारा संभाले जाते हैं। जब आप खोल को कमांड देते हैं जिसमें पुनर्निर्देशन शामिल होता है, तो खोल पहले फ़ाइल खोल देगा। >
के मामले में फ़ाइल लिखने के लिए खोला जाएगा, जिसका अर्थ है कि यह शून्य आकार में छोटा हो जाता है। पुनर्निर्देशन फ़ाइलों को खोले जाने के बाद, खोल एक नई प्रक्रिया शुरू करता है, किसी भी संभावित पुनर्निर्देशित फ़ाइलों को अपने मानक इनपुट, आउटपुट और त्रुटि को बाध्य करता है, और उसके बाद केवल आपके द्वारा दिए गए आदेश को निष्पादित करता है। तो जब आपके उदाहरण में sed
कमांड निष्पादन शुरू होता है, तो a.txt
को पहले ही खोल से छोटा कर दिया गया है।
संयोग से, और कुछ हद तक स्पर्शिक रूप से, यह कारण है कि आप सीधे sudo
के साथ पुनर्निर्देशन का उपयोग नहीं कर सकते हैं क्योंकि यह वह खोल है जिसे पुनर्निर्देशन फ़ाइल खोलने की अनुमति की आवश्यकता होती है, आदेश को निष्पादित नहीं किया जाता है।
गलत, प्रश्न-प्रश्नकर्ता नोटों की कोशिश कि एक फ़ाइल से पढ़ने के लिए पारित किया गया है। दूसरे जवाब का सही कारण है। –