यदि आप कभी भी अपने लिनक्स शेल के तहत पाइप और पुनर्निर्देशन का उपयोग करते हैं, तो संभावना है कि आपको कभी-कभी tee
का उपयोग करने की भी आवश्यकता होगी। उपयोगिता।
टी क्या करती है?
एक कमांड जैसे
ls
आपकी वर्तमान निर्देशिका की सामग्री प्रदर्शित करेगा। दूसरे शब्दों में, यह इन सामग्रियों को स्टडआउट (मानक आउटपुट) में प्रदर्शित करता है, जो सामान्य रूप से आपकी स्क्रीन है, या अधिक सटीक होने के लिए, आपका वर्चुअल टर्मिनल डिस्प्ले।
एक कमांड जैसे
ls > file123
आपकी स्क्रीन पर कुछ भी प्रदर्शित नहीं करेगा। ऐसा इसलिए है क्योंकि >
साइन सभी आउटपुट को स्टडआउट पर प्रदर्शित करने के बजाय फ़ाइल में रीडायरेक्ट करता है। file123 अब आपकी स्क्रीन पर पहले प्रदर्शित की गई सामग्री से भर जाएगा।
अपनी निर्देशिका की सामग्री को स्क्रीन पर प्रदर्शित करने और इसे एक फ़ाइल में लिखने के लिए, आप दो आदेशों का उपयोग करते हैं। tee
के साथ आप ये दोनों काम एक साथ कर सकते हैं।
ls | tee file123
टी का उपयोग क्यों करें यदि आप एक समान कमांड को दो बार चला सकते हैं?
ऊपर के उदाहरण में, यदि आप ls
. निष्पादित कर सकते हैं तो आपको स्पष्ट रूप से टी की आवश्यकता नहीं है सामान्य रूप से और फिर इसे फिर से निष्पादित करें और आउटपुट को फ़ाइल में रीडायरेक्ट करें। हालाँकि, आप उन स्थितियों का सामना करेंगे जहाँ आउटपुट अद्वितीय होगा। एक ऐसे परिदृश्य की कल्पना करें जहां आप किसी समस्या का निदान करने का प्रयास करते हैं। आप diagnose | tee error.log
. आपको मिलने वाली त्रुटियां अद्वितीय हो सकती हैं। आप उन्हें स्क्रीन पर प्रदर्शित करना चाहते हैं ताकि आप देख सकें कि चीजों का परीक्षण करते समय क्या हो रहा है। लेकिन आप उन त्रुटियों को एक फ़ाइल में सहेजना भी चाहते हैं, ताकि आप बाद में उनकी समीक्षा कर सकें या आउटपुट को चर्चा मंच पर पेस्ट कर सकें और लोगों से इसके बारे में पूछ सकें।
एक और स्थिति, जिसका अक्सर सामना करना पड़ता है, जब आपको टी की आवश्यकता हो सकती है, यह है:आप किसी कमांड के आउटपुट को उस स्थान पर लिखना चाहते हैं जहां केवल रूट उपयोगकर्ता ही पढ़ या लिख सकता है। यह काम नहीं करेगा।
/sbin/blkid > /root/somefile
फिर, आप सोच सकते हैं, "ठीक है, बिल्कुल, बस सूडो का उपयोग करें!" और आपको आश्चर्य होगा कि यह भी काम नहीं करता:
sudo blkid > /root/somefile
ऐसा इसलिए है क्योंकि sudo blkid
. के बाद निष्पादित, आप अभी भी अपने नियमित, गैर-रूट उपयोगकर्ता के रूप में लॉग इन हैं। और आपका खोल (आमतौर पर बैश), /root/somefile
. पर लिखने का प्रयास करता है अपने नियमित उपयोगकर्ता क्रेडेंशियल के साथ। इसे हल करने के लिए, आप टी का उपयोग कर सकते हैं:
/sbin/blkid | sudo tee /root/somefile
पाठ्य जोड़ना और पुनर्निर्देशन त्रुटियां
टी एक उपयोगी लेकिन सरल कमांड है; एक बुनियादी command | tee somefile
अधिकांश समय पर्याप्त होगा। हालांकि, आपको दो स्थितियों का सामना करना पड़ सकता है जिनके लिए इन युक्तियों की आवश्यकता होगी।
जानने वाली पहली बात यह है कि टी, डिफ़ॉल्ट रूप से, हमेशा एक फ़ाइल को अधिलेखित कर देता है। अगर आप दौड़ते हैं
ls | tee somefile
और फिर
ls /tmp | tee somefile
दूसरा कमांड somefile की सामग्री को अधिलेखित कर देगा, और आप केवल अंतिम कमांड की सामग्री को निष्पादित देखेंगे। इस व्यवहार को बदलने के लिए, आप ओवरराइट के बजाय टी एपेंड टेक्स्ट बना सकते हैं। ऐसा करने के लिए, बस -a
. का उपयोग करें कमांड स्विच।
ls | tee -a somefile
दूसरी बात यह जानना है कि सभी आउटपुट समान नहीं होते हैं। त्रुटि संदेशों को अलग तरह से व्यवहार किया जाता है, और हालांकि वे स्क्रीन पर दिखाई देते हैं, उन्हें स्टडआउट नहीं माना जाता है, इसलिए उन्हें टी द्वारा पकड़ा नहीं जाएगा। (उन्हें stderr माना जाता है।) यहाँ grep पर एक उदाहरण दिया गया है।
grep -r L2TP /etc | tee somefile
यह निम्न छवि की तरह कुछ प्रदर्शित करेगा।
अनुमति अस्वीकृत संदेश stderr को लिखे जाते हैं। Stdout को लिखी जाने वाली एकमात्र चीज़ हाइलाइट किया गया टेक्स्ट है। इसलिए आप देखेंगे कि "somefile" की सामग्री नीचे दी गई छवि में दिखाई गई है।
इस मामले में, जहां पाठ की खोज के लिए grep का उपयोग किया जाता है, यह उपयोगी है कि त्रुटि संदेशों को फ़ाइल पर पुनर्निर्देशित नहीं किया जाता है। वे सिर्फ अनावश्यक कचरे से फाइल भर देंगे। आप केवल पाए गए परिणाम देखना चाहते हैं। लेकिन जब आपको त्रुटि संदेशों की आवश्यकता हो, तो 2>&1
. का उपयोग करें , जो stderr को stdout पर पुनर्निर्देशित करता है।
grep -r L2TP /etc 2>&1 | tee somefile
इस आदेश के साथ आप देखेंगे कि somefile में अब त्रुटि संदेश भी हैं।
निष्कर्ष
उम्मीद है, इस ट्यूटोरियल में टी कमांड से सबसे अधिक उपयोग करने के लिए आपको जो कुछ भी चाहिए, उसे शामिल किया गया है। लेकिन अगर आपको ऐसी स्थिति का सामना करना पड़ता है जहां आप टी के साथ फंस जाते हैं, तो नीचे एक टिप्पणी छोड़ दो, और हम मदद करने में सक्षम हो सकते हैं।