एक फ़ाइल "foo.txt"
को देखते हुए, से बनाए गए:subshell आईओ पुनर्निर्देशन
$ seq 1 10 > "foo.txt"
मैं फ़ाइल के दोनों पहली और आखिरी पंक्ति को पढ़ने के लिए कोशिश कर रहा हूँ, और मैं एक subshell करने के लिए फ़ाइल पुनः निर्देशित द्वारा शुरू किया, ताकि कमांड की सूची क्रम में फ़ाइल की खपत होगी - हर कमांड बिंदु पिछले आदेश में यह छोड़ दिया है से इनपुट की खपत, मैं लगता है:
$ (head -1; tail -1) < "foo.txt"
1
10
हालांकि, अगर मैं एक अस्थायी के साथ एक ही कोशिश फ़ाइल वर्णनकर्ता, उत्पादन ही नहीं है:
$ (head -1; tail -1) < <(seq 1 10)
1
प्रश्न:
मैं क्या
<(seq 1 10)
नाम के बारे में सुनिश्चित नहीं हूँ, लेकिन इस अस्थायी के बीच अंतर क्या है फाइल डिस्क्रिप्टर और नियमित एक ("foo.txt"
), जिससे सबहेल निष्पादन अलग-अलग व्यवहार कर सकता है?मैं subshell करने के लिए एक
"foo.txt"
पुनः निर्देशित की समान व्यवहार कैसे प्राप्त कर सकते हैं, लेकिन एक अस्थायी फ़ाइल के बिना - वास्तव में एक फ़ाइल बनाने के बिना।
+1 बहुत अच्छी व्याख्या के लिए +1। हालांकि, ओपी पूछ रहा है कि क्या इस तरह के व्यवहार को बिना किसी अस्थायी फ़ाइल के प्राप्त करना संभव है। क्या यह? मेरे परीक्षण असफल रहे। – fedorqui
'sh -c" पढ़ने वाली रेखा के साथ 'head' को प्रतिस्थापित करके; "$ line" echo echo, वांछित व्यवहार अस्थायी फ़ाइल के बिना पूरा किया जा सकता है। –
+1 यह सटीक स्पष्टीकरण है जिसे मैं ढूंढ रहा था!चूंकि आपने अपनी चीजों को बनाने के बारे में बात की है, इसलिए मैं अपने दोस्तों की एक शेल लिपि लिखने के बारे में सोच रहा हूं; हम किसी भी तरह के कार्यात्मक खोल के बारे में सोच रहे हैं, पैटर्न मिलान और सभी बेहतरीन चाल के साथ (: – Rubens