मान लीजिए कि एक प्रोग्राम मौजूद है, जो दो तर्क देता है; इनपुट फ़ाइल और आउटपुट फ़ाइल।
क्या होगा अगर मैं इस आउटपुट फ़ाइल को डिस्क पर सहेजना नहीं चाहता, बल्कि इसे सीधे stdin
किसी अन्य प्रोग्राम में पास कर दूं । क्या इसको हासिल करने के लिए कोई रास्ता है?
लिनक्स पर आने वाली बहुत सारी कमांड आउटपुट फाइल तर्क के रूप में '-' पास करने का विकल्प प्रदान करती है, जो कि मैंने ऊपर निर्दिष्ट किया है। क्या ऐसा इसलिए है क्योंकि stdin
एक कार्यक्रम को एक तर्क के रूप में पारित करना संभव नहीं है? यदि यह है, तो हम इसे कैसे करते हैं?
इसका उपयोग करने के लिए मैं कैसे छवि का एक उदाहरण है:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
मैं जिस शेल का उपयोग कर रहा हूं वह बैश है।
cat < README.txt | cp /dev/fd/0
:। यह कहा गयाcp: missing destination file operand after ‘/dev/fd/0’ Try 'cp --help' for more information.
program input-file /dev/stdout | another-program
? यह भी ध्यान दें कि echo
स्टड से कुछ भी नहीं पढ़ता है।
cp
कहीं भी फाइल नहीं कर सकते । echo 1 2 3| cp /dev/fd/0 /dev/tty
छप जाएगा 1 2 3
। और वैसे, अधिकांश मामलों की /dev/fd/[num]
तुलना /dev/std(in|out|err)
में काम करने की अधिक संभावना है । फ़ाइल-डिस्क्रिप्टर लिंक की पोर्टेबिलिटी देखें कि आप कहाँ काम करने की उम्मीद कर सकते हैं।
cat <file | cmd /dev/fd/0
अधिकांश यूनियनों पर काम करता है।