मुखपृष्ठ » कैसे » कैसे एक कमांड के आउटपुट को बैश (उर्फ लिनक्स और मैकओएस टर्मिनल में फाइल में सेव करें)

    कैसे एक कमांड के आउटपुट को बैश (उर्फ लिनक्स और मैकओएस टर्मिनल में फाइल में सेव करें)

    जब आप बैश प्रॉम्प्ट पर एक कमांड चलाते हैं, तो यह आम तौर पर टर्मिनल पर सीधे उस कमांड के आउटपुट को प्रिंट करता है ताकि आप इसे तुरंत पढ़ सकें। लेकिन बैश आपको किसी भी कमांड के आउटपुट को "रीडायरेक्ट" करने की अनुमति देता है, इसे टेक्स्ट फाइल में सेव करना ताकि आप आउटपुट की समीक्षा कर सकें.

    यह किसी भी ऑपरेटिंग सिस्टम पर लिनक्स और मैकओएस से विंडोज 10 के उबंटू-आधारित बैश वातावरण में काम करता है.

    विकल्प एक: केवल फ़ाइल में आउटपुट पुनर्निर्देशित करना

    बैश पुनर्निर्देशन का उपयोग करने के लिए, आप एक कमांड चलाते हैं, निर्दिष्ट करें > या >> ऑपरेटर, और फिर उस फ़ाइल का पथ प्रदान करें जिसे आप आउटपुट को पुनर्निर्देशित करना चाहते हैं.

    •  > फ़ाइल के मौजूदा कंटेंट की जगह एक फाइल के कमांड के आउटपुट को रीडायरेक्ट करता है.
    •  >> किसी फ़ाइल में कमांड के आउटपुट को रीडायरेक्ट करता है, आउटपुट को फाइल के मौजूदा कंटेंट में जोड़ता है.

    तकनीकी रूप से, यह "स्टडआउट" -मानक आउटपुट को रीडायरेक्ट करता है, जो कि एक फाइल का स्क्रीन-टू है.

    यहाँ एक सरल उदाहरण है। ls कमांड निर्देशिका में फ़ाइलों और फ़ोल्डरों को सूचीबद्ध करता है। इसलिए। जब आप निम्न कमांड चलाते हैं, ls वर्तमान निर्देशिका में फ़ाइलों और फ़ोल्डरों को सूचीबद्ध करेगा। लेकिन यह उन्हें स्क्रीन पर प्रिंट नहीं करेगा-यह उन्हें आपके द्वारा निर्दिष्ट फ़ाइल में बचाएगा.

    ls> / path / to / file

    आपको मौजूदा फ़ाइल का पथ निर्दिष्ट करने की आवश्यकता नहीं है। किसी भी मान्य पथ को निर्दिष्ट करें और बैश उस स्थान पर एक फ़ाइल बनाएगा.

    यदि आप फ़ाइल की सामग्री देखते हैं, तो आप देखेंगे ls कमांड का आउटपुट। उदाहरण के लिए, बिल्ली कमांड फ़ाइल की सामग्री को टर्मिनल पर प्रिंट करता है:

    बिल्ली / पथ / से / फ़ाइल

    याद करो >  ऑपरेटर कमांड के आउटपुट के साथ फाइल की मौजूदा सामग्री को बदल देता है। यदि आप एक फ़ाइल में कई कमांड के आउटपुट को सहेजना चाहते हैं, तो आप इसका उपयोग करेंगे >> इसके बजाय ऑपरेटर। उदाहरण के लिए, निम्न आदेश आपके द्वारा निर्दिष्ट फ़ाइल में सिस्टम जानकारी को जोड़ देगा:

    uname -a >> / path / to / file

    यदि फ़ाइल पहले से मौजूद नहीं है, तो bash फ़ाइल बनाएगा। अन्यथा, बैश अकेले फ़ाइल की मौजूदा सामग्री को छोड़ देगा और आउटपुट को फ़ाइल के अंत में जोड़ देगा.

    जब आप फ़ाइल की सामग्री देखते हैं, तो आप देखेंगे कि आपकी दूसरी कमांड के परिणाम फ़ाइल के अंत में संलग्न थे:

    आप इस प्रक्रिया को कई बार दोहरा सकते हैं क्योंकि आप फ़ाइल के अंत में अपेंडिंग आउटपुट रखना पसंद करते हैं.

    विकल्प दो: सामान्य रूप से आउटपुट प्रिंट करें और इसे एक फ़ाइल में रीडायरेक्ट करें

    आप के साथ आउटपुट पुनर्निर्देशित करना पसंद नहीं कर सकते > या >> ऑपरेटर, जैसा कि आप टर्मिनल में कमांड का आउटपुट नहीं देखेंगे। यही तो है टी कमांड के लिए है टी कमांड स्क्रीन पर मिलने वाले इनपुट को प्रिंट करता है तथा एक ही समय में एक फ़ाइल के लिए इसे बचाता है.

    कमांड के आउटपुट को पाइप करने के लिए टी, इसे अपनी स्क्रीन पर प्रिंट करना और फ़ाइल में सहेजना, निम्न सिंटैक्स का उपयोग करें:

    कमान | टी / पथ / से / फ़ाइल

    यह कमांड के आउटपुट के साथ फाइल में कुछ भी बदल देगा, जैसे > ऑपरेटर.

    कमांड के आउटपुट को पाइप करने के लिए टी , अपनी स्क्रीन पर प्रिंट करना और फ़ाइल में सहेजना, लेकिन इसे फ़ाइल के अंत में जोड़ना:

    कमान | टी-ए / पथ / से / फ़ाइल

    यह फ़ाइल के अंत में आउटपुट को जोड़ देगा, ठीक उसी तरह जैसे >> ऑपरेटर.

    बैश शेल में कुछ अतिरिक्त, उन्नत ऑपरेटर शामिल हैं जो समान कार्य करते हैं। यदि आप बैश स्क्रिप्ट लिख रहे हैं तो वे विशेष रूप से उपयोगी होंगे। अधिक विस्तृत जानकारी के लिए उन्नत बैश-स्क्रिप्टिंग गाइड में I / O पुनर्निर्देशन अध्याय से परामर्श करें.