आदेशों के लिए `टी`


15

teeमानक आउटपुट और फ़ाइल में पाइप किए गए मानक इनपुट को पुनर्निर्देशित कर सकता है ।

echo Hello, World! | tee greeting.txt

ऊपर दी गई कमांड टर्मिनल स्क्रीन पर ग्रीटिंग प्रदर्शित करेगी और greeting.txtफ़ाइल के कंटेंट में सेव करेगी , अगर उस नाम से कोई भी फाइल नहीं है तो फाइल बना लेगी ।

ओवरराइटिंग के बजाय मौजूदा फ़ाइल को जोड़ने के लिए -aस्विच भी है tee


क्या फ़ाइल के बजाय कमांड और मानक आउटपुट पर पाइप किए गए इनपुट को पुनर्निर्देशित करने का एक सुविधाजनक तरीका है ?

मैं bukuप्राथमिक सूची के URL को उसकी अनुक्रमणिका संख्या द्वारा निर्दिष्ट प्राथमिक चयन की प्रतिलिपि बनाने के लिए एक आवरण स्क्रिप्ट बनाने का प्रयास कर रहा हूं ।

# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION

यहां मैं echo दो बार उपयोग करता हूं , पहले टर्मिनल पर प्रदर्शित करने के लिए, और फिर प्राथमिक चयन (क्लिपबोर्ड) में बचत।

मैं echo $url | teeC xselअगले कमांड (चाइनिंग कमांड) को पास करने से पहले आउटपुट को प्रदर्शित करने के लिए कुछ या शॉर्टकट की कल्पना करता हूं , जो मुझे इस तरह से एक चर में परिणाम को बचाने की आवश्यकता के बिना पूरे कमांड को एक पंक्ति में चेन करने की अनुमति देगा :

buku -f 1 -p $1 | cut -f 2 | teeC xsel    

मैं इसे निम्न प्रकार urlviewसे देखने, चयन करने और खोलने के साथ भी उपयोग कर सकता हूं $BROWSER:

bukuc 10-20 | urlview

3
कोशिश करो tee /dev/ttyया tty0(बिल्कुल याद नहीं ... मैं सड़क पर हूँ)
जॉर्ज वासिलिउ

2
info teeउल्लेख कार्यक्रम प्रतिस्थापन, और एक कार्यक्रम के लिए टी के उत्पादन पाइप ...
Xen2050

जवाबों:


19

यह सीधे गोले में है जो प्रक्रिया प्रतिस्थापन का समर्थन करता है , जैसे बैश

$ echo foo | tee >(xsel)
foo
$ xsel -o
foo

अन्यथा, आप एक फीफो का उपयोग कर सकते हैं (हालांकि इसमें सुविधा का अभाव है)

$ mkfifo _myfifo
$ xsel < _myfifo &
$ echo bar | tee _myfifo
bar
$ xsel -o
bar
[1] + Done                       xsel 0<_myfifo
$ 

धन्यवाद! दो बातें मैंने नोट shकीं : 1. (बॉर्न शेल) उस सुविधा का समर्थन नहीं करता है; 2. >()प्रक्रिया प्रतिस्थापन के लिए तीर को एकल ऑपरेटर के भाग के रूप में छड़ी करना पड़ता है ।

11

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

का उपयोग करना pee, आप परिणाम तुम दोनों को चलाने के लिए यह बताकर चाहता था प्राप्त कर सकते हैं xselऔर catइनपुट के साथ।

echo foo | pee xsel cat

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

आप उन्हें उद्धृत करके अधिक जटिल आदेश दे सकते हैं pee "xsel --display :1" cat:। वे साथ चल रहे हैं sh, इसलिए आपको शेल मेटाचैकर के बारे में सावधान रहना होगा।


4
बहुत अच्छा - के बारे में पता नहीं था
Steeldriver

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