2010-05-17 16 views
5

की श्रृंखला एक यूनिक्स वातावरण में, मैं तो जैसे आदेशों की एक श्रृंखला पर tee उपयोग करना चाहते हैं:यूनिक्स और टी - आदेशों

$ echo 1; echo 2 | tee file 
1 
2 

$ cat file 
2 

क्यों file केवल अंतिम आदेश से उत्पादन होने के रूप में अंत है?

इस चर्चा के प्रयोजनों के लिए, मान लीजिए कि मैं उन्हें अलग नहीं कर सकता और आदेशों को अलग से चला सकता हूं।

+0

साथ ही एक स्पष्ट उप खोल बनाने के रूप में:

(echo 1; echo 2) | tee file 

कोष्ठकों के बिना, यह के रूप में पार्स रही है , आप '{echo 1 का उपयोग कर सकते हैं; गूंज 2; } | फ़ाइल में आउटपुट प्राप्त करने के लिए टीई फाइल '। ध्यान दें कि '{' को किसी स्थान से कमांड से अलग किया जाना है, और '}' दिखाना चाहिए जहां एक कमांड दिखाई दे सकता है (इसलिए यह दूसरे अर्धविराम के बाद है)। दूसरा विकल्प हमेशा एक नई स्क्रिप्ट बनाने के लिए होता है जिसमें दो अविभाज्य आदेश होते हैं और इसके उत्पादन को 'टीई' में पाइप किया जाता है: 'conjoined-twin-process | टीई फाइल '। –

उत्तर

4

प्रयास करें:

echo 1 ; (echo 2 | tee file) 
5

इसमें केवल दूसरे कमांड का आउटपुट है, क्योंकि अर्धविराम खोल के लिए एक नया बयान इंगित करता है।

बस उन्हें कोष्ठक में डाल दिया:

(echo 1; echo 2) | tee file