पाइप और स्टडआउट के लिए प्रत्यक्ष उत्पादन


14

मैं सोच रहा था कि क्या कोई कमांड के आउटपुट को पाइप करने और इसे स्टडआउट तक निर्देशित करने का कोई तरीका है। इसलिए उदाहरण के लिए, fortuneएक भाग्य कुकी प्रिंट करता है और इसे क्लिपबोर्ड पर भी कॉपी करता है:

$ fortune | tee >(?stdout?) | pbcopy 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and
the Ugly)."
(By Matt Welsh)

मेरे हाथ में मेरा OSX नहीं है, इसके बारे में क्या fortune | tee $(tty) | pbcopy?
आर्केमोर

जवाबों:


9

आपकी धारणा:

fortune | tee >(?stdout?) | pbcopy

काम नहीं करेगा क्योंकि fortuneआउटपुट दो बार मानक से लिखा जाएगा, इसलिए आप आउटपुट को दोगुना कर देंगे pbcopy

OSX (और अन्य सिस्टम समर्थन /dev/std{out,err,in}) में, आप इसे देख सकते हैं:

$ echo 1 | tee /dev/stdout | sed 's/1/2/'
2
2

उत्पादन 2दो बार के बजाय 1और 2

आपको अन्य फ़ाइल डिस्क्रिप्टर का उपयोग करना चाहिए, उदाहरण के लिए मानक त्रुटि /dev/stderr:

$ echo 1 | tee /dev/stderr | sed 's/1/2/'
1
2

या ttyजुड़ा हुआ छद्म टर्मिनल पाने के लिए उपयोग करें:

$ echo 1 | tee "$(tty)" | sed 's/1/2/'
1
2

साथ zshऔर multiosविकल्प सेट, आप की जरूरत नहीं है teeसब पर:

$ echo 1 >/dev/stderr | sed 's/1/2/'
1
2

tee $(tty)या, y'know,tee /dev/tty
केनस्टर

महान विवरण, शीर्ष SO चारों ओर से उत्तर देता है।
मर्लिन

11

teeहमेशा अपने मानक उत्पादन के लिए लिखता है। यदि आप टर्मिनल के अलावा जहां मानक आउटपुट पहले से ही जा रहे हैं, कमांड के लिए डेटा भेजना चाहते हैं, तो बस उस कमांड के साथ प्रोसेस प्रतिस्थापन का उपयोग करें। (ध्यान दें कि >प्रक्रिया शुरू करने के बावजूद , प्रक्रिया प्रतिस्थापन मानक आउटपुट को पुनर्निर्देशित नहीं करता है, teeकमांड इसे एक पैरामीटर के रूप में देखता है।)

fortune | tee >(pbcopy)

यह अच्छा है, एक अच्छा समाधान भी है।
मर्लिन

0

cuonglm ने यह सब कहा।

कोशिश करो:

fortune | tee "$(tty)" | pbcopy

tty/dev/pts/99संवादात्मक सत्र (अर्थात टर्मिनल) में वास्तविक छद्म टर्मिनल (जैसे ) का समाधान करना चाहिए , या बैच और डेमॉन में कोई टेटी नहीं होना चाहिए ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.