Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Linux

लिनक्स में tee कमांड का उपयोग कैसे करें

लिनक्स में tee कमांड का उपयोग कैसे करें

यदि आप कभी अपने लिनक्स शेल के तहत पाइप और रीडायरेक्शन का उपयोग करते हैं, तो संभावना है कि आपको कभी-कभी tee यूटिलिटी का उपयोग करने की भी आवश्यकता होगी।

tee क्या करता है?

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

ls > file123
जैसी कमांड आपकी स्क्रीन पर कुछ भी प्रदर्शित नहीं करेगी। ऐसा इसलिए है क्योंकि > साइन सभी आउटपुट को स्क्रीन पर प्रदर्शित करने के बजाय एक फाइल में रीडायरेक्ट करता है। file123 अब उस सामग्री से भर जाएगी जो पहले आपकी स्क्रीन पर प्रदर्शित थी।

अपनी डायरेक्टरी की सामग्री को स्क्रीन पर प्रदर्शित करने और इसे एक फाइल में लिखने के लिए, आप दो कमांड का उपयोग करते हैं। tee के साथ आप ये दोनों काम एक साथ कर सकते हैं।

ls | tee file123

यदि आप समान कमांड को दो बार चला सकते हैं तो Tee का उपयोग क्यों करें?

ऊपर दिए गए उदाहरण में, यदि आप ls को सामान्य रूप से निष्पादित कर सकते हैं और फिर इसे फिर से निष्पादित कर सकते हैं और आउटपुट को एक फाइल में रीडायरेक्ट कर सकते हैं तो आपको स्पष्ट रूप से tee की आवश्यकता नहीं है। हालांकि, आप ऐसी स्थितियों का सामना करेंगे जहां आउटपुट अद्वितीय होगा। एक परिदृश्य की कल्पना करें जहां आप किसी समस्या का निदान करने का प्रयास करते हैं। आप diagnose | tee error.log चलाते हैं। आपको जो एरर मिलते हैं वे अद्वितीय हो सकते हैं। आप उन्हें स्क्रीन पर प्रदर्शित होते देखना चाहते हैं ताकि आप देख सकें कि जैसे ही आप चीजों का परीक्षण करते हैं क्या हो रहा है। लेकिन आप उन एरर को एक फाइल में भी सेव करना चाहते हैं, ताकि आप बाद में उनकी समीक्षा कर सकें या किसी डिस्कशन फोरम पर आउटपुट पेस्ट करके लोगों से इसके बारे में पूछ सकें।

एक और स्थिति, जो अक्सर सामने आती है, जब आपको tee की आवश्यकता हो सकती है, वह यह है: आप किसी कमांड के आउटपुट को किसी ऐसे स्थान पर लिखना चाहते हैं जहां केवल रूट उपयोगकर्ता पढ़ या लिख सकता है। यह काम नहीं करेगा।

/sbin/blkid > /root/somefile

फिर, आप सोच सकते हैं, "ठीक है, बस sudo का उपयोग करें!" और आप आश्चर्यचकित होंगे कि यह भी काम नहीं करता:

sudo blkid > /root/somefile

ऐसा इसलिए है क्योंकि sudo blkid निष्पादित होने के बाद, आप अभी भी अपने नियमित, नॉन-रूट उपयोगकर्ता के रूप में लॉग इन हैं। और आपका शेल (आमतौर पर बैश), आपके नियमित उपयोगकर्ता क्रेडेंशियल्स के साथ /root/somefile पर लिखने का प्रयास करता है। इसे हल करने के लिए, आप tee का उपयोग कर सकते हैं:

/sbin/blkid | sudo tee /root/somefile

टेक्स्ट जोड़ना और एरर रीडायरेक्ट करना

tee एक उपयोगी लेकिन सरल कमांड है; एक बेसिक command | tee somefile ज्यादातर समय पर्याप्त होगा। हालांकि, दो परिदृश्य हैं जिनका आप सामना कर सकते हैं जिनके लिए इन युक्तियों की आवश्यकता होगी।

पहली बात यह जानना है कि tee, डिफ़ॉल्ट रूप से, हमेशा एक फाइल को ओवरराइट करता है। यदि आप चलाते हैं

ls | tee somefile

और फिर

ls /tmp | tee somefile

दूसरी कमांड somefile की सामग्री को ओवरराइट कर देगी, और आप केवल अंतिम निष्पादित कमांड की सामग्री देखेंगे। इस व्यवहार को बदलने के लिए, आप tee को ओवरराइट के बजाय टेक्स्ट जोड़ने के लिए बना सकते हैं। ऐसा करने के लिए, बस -a कमांड स्विच का उपयोग करें।

ls | tee -a somefile

दूसरी बात यह जानना है कि सभी आउटपुट समान नहीं हैं। एरर मैसेज को अलग तरह से माना जाता है, और हालांकि वे स्क्रीन पर दिखाई देते हैं, उन्हें stdout नहीं माना जाता है, इसलिए वे tee द्वारा नहीं पकड़े जाएंगे। (उन्हें stderr माना जाता है।) यहां grep पर एक उदाहरण है।

grep -r L2TP /etc | tee somefile

यह निम्न छवि जैसा कुछ प्रदर्शित करेगा।

लिनक्स में tee कमांड का उपयोग कैसे करें

Permission denied मैसेज stderr पर लिखे जाते हैं। stdout पर लिखी जाने वाली एकमात्र चीज हाइलाइट किया गया टेक्स्ट है। इसलिए आप देखेंगे कि "somefile" की सामग्री नीचे दी गई छवि में दिखाई गई है।

लिनक्स में tee कमांड का उपयोग कैसे करें

इस मामले में, जहां टेक्स्ट खोजने के लिए grep का उपयोग किया जाता है, यह उपयोगी है कि एरर मैसेज फाइल में रीडायरेक्ट नहीं होते। वे फाइल को अनावश्यक कचरे से भर देंगे। आप केवल पाए गए परिणाम देखना चाहते हैं। लेकिन जब आपको एरर मैसेज की आवश्यकता होती है, तो 2>&1 का उपयोग करें, जो stderr को stdout पर रीडायरेक्ट करता है।

grep -r L2TP /etc 2>&1 | tee somefile

इस कमांड के साथ आप देखेंगे कि somefile में अब एरर मैसेज भी हैं।

निष्कर्ष

उम्मीद है, यह ट्यूटोरियल tee कमांड का अधिकतम लाभ उठाने के लिए आपको जो कुछ भी चाहिए वह सब कुछ कवर करता है। लेकिन यदि आप ऐसी स्थिति का सामना करते हैं जहां आप tee के साथ फंस जाते हैं, तो नीचे कमेंट छोड़ें, और हम मदद करने में सक्षम हो सकते हैं।


  1. लिनक्स टर्मिनल को कैलकुलेटर के रूप में कैसे उपयोग करें लिनक्स टर्मिनल को कैलकुलेटर के रूप में कैसे उपयोग करें

    क्या आप फैंसी GUI पर लिनक्स टर्मिनल की सादगी पसंद करते हैं? यदि आपको जल्दी से कुछ गणित करने की आवश्यकता है, तो आपको कैलकुलेटर ऐप का उपयोग करने की आवश्यकता नहीं है। आप उन टूल का उपयोग करके टर्मिनल का उपयोग करके अपनी गणना कर सकते हैं जो शायद आपके पास पहले से इंस्टॉल हैं। आइए देखें कि आप लिनक्स टर्मिनल

  1. Linux में नेटवर्क कनेक्शन मॉनिटर करने के लिए ss कमांड का उपयोग कैसे करें Linux में नेटवर्क कनेक्शन मॉनिटर करने के लिए ss कमांड का उपयोग कैसे करें

    यदि आप Linux का उपयोग करते हैं, तो शायद ऐसा समय आएगा जब आपको अपने नेटवर्क के बारे में अधिक जानने की आवश्यकता होगी। कई टूल इसमें आपकी मदद कर सकते हैं, और कुछ दूसरों की तुलना में अधिक जटिल हैं। ss कमांड एक ऐसा टूल है जिस पर आप भरोसा कर सकते हैं कि यह कई मशीनों पर इंस्टॉल होगा, इसलिए इसे जानना उपयोगी ह

  1. Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण

    Linux में watch कमांड एक काम करता है – एक कमांड को दोहराता है और परिणाम को बार-बार आउटपुट करता है, जिससे आप परिवर्तनों को देख सकते हैं। यहाँ इसका उपयोग कैसे करें। watch कमांड सिंटैक्स watch कमांड का सिंटैक्स इस प्रकार है: watch OPTIONS COMMAND ध्यान दें कि: OPTIONS नीचे दी गई तालिका से विकल्पों की