बस @ jw013 के ठीक जवाब में जोड़ने के लिए, यह महसूस करने में मदद मिल सकती है कि यह उसी तरह है
{
cat -n
cat -n
} < infile
< file
छोटा होने के कारण 0< file
, यह 3 के बजाय फ़ाइल डिस्क्रिप्टर 0 का उपयोग करता है।
और बस मामले को थोड़ा भ्रमित करने के लिए, यह संस्करण:
exec 3< infile
cat -n /dev/fd/3
cat -n /dev/fd/3
बर्ताव करता है अलग ढंग से ओएस आप में इसे चलाने और पर निर्भर करता है प्रकार की infile
(पाइप डिवाइस बनाम बनाम नियमित रूप से फ़ाइल ...)
सोलारिस और अधिकांश वाणिज्यिक यूनियनों पर, open("/dev/fd/3")
एक dup(3)
( कम से कम एक समान है ( < /dev/fd/3
जैसा कि लगभग उसी के समान है <&3
), जबकि लिनक्स पर, नियमित फ़ाइलों के /dev/fd/3
लिए, मूल फ़ाइल के लिए सिमलिंक के रूप में कार्यान्वित किया जाता है, इसलिए open("/dev/fd/3")
इसे प्रारंभ से नए सिरे से खोलता है ( और संभवतः fd 3 से अलग झंडे के साथ)।