Linux Shell/कमांड लाइन में tee कमांड एक एप्लिकेशन के आउटपुट को विभाजित करता है – आउटपुट को दोनों एक फ़ाइल और STDOUT (कंसोल या एक अन्य एप्लिकेशन) पर भेजता है। यहाँ इसका उपयोग कैसे करें।
tee कमांड का नाम प्लंबिंग में उपयोग किए जाने वाले T-स्प्लिटर के नाम पर रखा गया है – एक पाइप जो पानी को एक स्रोत से दो दिशाओं में पुनर्निर्देशित करता है।
tee कमांड सिंटैक्स
tee एक सरल उद्देश्य और सरल सिंटैक्स वाली कमांड है:
tee OPTIONS FILE
ध्यान दें कि:
- OPTIONS नीचे दी गई तालिका से विकल्पों की सूची है
- FILE उस फ़ाइल का पथ है जिसमें आप आउटपुट को सेव करना चाहते हैं
- इनपुट को tee पर पाइप या रीडायरेक्ट करने की आवश्यकता है – अन्यथा, इसके पास काम करने के लिए कुछ नहीं है
- यह मानक इनपुट/आउटपुट को रीडायरेक्ट करके किया जाता है – उदाहरणों के लिए नीचे देखें
- tee इसे प्रदान किए गए डेटा को दोनों निर्दिष्ट FILE के साथ-साथ STDOUT (मानक आउटपुट) पर आउटपुट करेगा
- डिफ़ॉल्ट रूप से, यह कंसोल पर आउटपुट होगा, लेकिन इसे अन्य एप्लिकेशन्स में भी रीडायरेक्ट किया जा सकता है
विकल्प
यहाँ tee कमांड के लिए सबसे अधिक उपयोग किए जाने वाले विकल्प हैं:
| विकल्प | विवरण |
|---|---|
| -a, –append | दिए गए FILEs में जोड़ें, ओवरराइट न करें |
| -i, –ignore-interrupts | इंटरप्ट सिग्नल्स को अनदेखा करें |
अधिक विकल्पों के लिए, जिसमें त्रुटियों का निदान कैसे करें, आप यूजर मैनुअल चलाकर देख सकते हैं:
man tee
tee कमांड उदाहरण
यहाँ कुछ सरल उदाहरण हैं कि tee का उपयोग कैसे किया जा सकता है।
ये सभी उदाहरण echo कमांड का उपयोग करते हैं, जो बस इसे सप्लाई किए गए टेक्स्ट को आउटपुट करता है।
कमांड से आउटपुट देखें और नई फ़ाइल में सेव करें
echo कमांड का आउटपुट tee को पाइप किया जाएगा, जो इसे फ़ाइल में सेव करेगा साथ ही कंसोल पर आउटपुट करेगा:
echo "hello!" | tee hello.txt
यदि फ़ाइल hello.txt मौजूद है, तो इसे ओवरराइट कर दिया जाएगा।
कमांड से आउटपुट देखें और मौजूदा फ़ाइल में सेव करें
यह उदाहरण ऊपर जैसा ही करता है, लेकिन यह मौजूदा फ़ाइल के अंत में जोड़ देगा बजाय इसे ओवरराइट करने के:
echo "hello again!" | tee -a hello.txt
आउटपुट को एकाधिक फ़ाइलों में सेव या जोड़ें
कई फ़ाइलें निर्दिष्ट की जा सकती हैं, स्पेस द्वारा अलग की गईं:
echo "hello several files!" | tee hello1.txt hello2.txt hello3.txt
tee आउटपुट को रीडायरेक्ट/पाइप करें
tee के मानक आउटपुट को पाइप और रीडायरेक्ट किया जा सकता है। नीचे का उदाहरण echo के आउटपुट को hello.txt में सेव करेगा। आउटपुट फिर कंसोल पर आउटपुट होने के बजाय grep कमांड को पास किया जाएगा:
echo "hello!" | tee hello.txt | grep hello
उदाहरण के लिए, grep कमांड (जिसका उपयोग टेक्स्ट इनपुट खोजने के लिए किया जाता है) बस tee से आउटपुट में "hello" शब्द खोजता है।
इंटरप्ट्स को अनदेखा करना
इंटरप्ट्स को अनदेखा करना (उदाहरण के लिए कमांड छोड़ने के लिए CTRL + C दबाना) tee से क्लीनर आउटपुट का परिणाम दे सकता है:
echo "hello!" | tee -i hello.txt
sudo के साथ tee का उपयोग करना
sudo कमांड आपको रूट यूजर के रूप में कमांड्स निष्पादित करने की अनुमति देता है बिना रूट के रूप में लॉग इन किए और आमतौर पर उपयोग किया जाता है।
निम्न स्निपेट में – sudo आपको कमांड्स के आउटपुट को रीडायरेक्ट करने की अनुमति नहीं देता है, क्योंकि sudo कमांड स्वयं रीडायरेक्शन नहीं करता है क्योंकि यह रीडायरेक्शन सिंबल (>) से पहले आता है:
sudo echo "hello!" > /root/hello.txt
…यह एक परमिशन एरर के साथ विफल होगा क्योंकि /root डायरेक्ट्री को रूट विशेषाधिकारों की आवश्यकता होती है, लेकिन sudo कमांड केवल इन विशेषाधिकारों को echo कमांड पर लागू करता है – बाद में आने वाले रीडायरेक्शन पर नहीं।
इससे निपटने की एक ट्रिक tee कमांड का उपयोग करना है:
echo "hello!" | sudo tee /root/hello.txt
यह काम करेगा क्योंकि echo कमांड का आउटपुट tee को पास किया जाता है, जो है sudo के माध्यम से एडमिनिस्ट्रेटिव विशेषाधिकारों के साथ चल रहा है – और tee आउटपुट को सेव करता है।