ऑनवर्क्स लिनक्स और विंडोज ऑनलाइन वर्कस्टेशन

प्रतीक चिन्ह

वर्कस्टेशन के लिए मुफ्त होस्टिंग ऑनलाइन

<पिछला | विषय-सूची | अगला>

मानक आउटपुट को पुनर्निर्देशित करना

I/O पुनर्निर्देशन हमें यह पुनः परिभाषित करने की अनुमति देता है कि मानक आउटपुट कहाँ जाता है। मानक आउटपुट को स्क्रीन के बजाय किसी अन्य फ़ाइल पर पुनर्निर्देशित करने के लिए, हम फ़ाइल के नाम के बाद ">" पुनर्निर्देशन ऑपरेटर का उपयोग करते हैं। हम ऐसा क्यों करना चाहेंगे? किसी कमांड के आउटपुट को फ़ाइल में संग्रहीत करना अक्सर उपयोगी होता है। उदाहरण के लिए, हम शेल को आउटपुट भेजने के लिए कह सकते हैं ls फ़ाइल को आदेश दें ls-output.txt स्क्रीन के बजाय:


[मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin > ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin > ls-output.txt


यहां, हमने इसकी एक लंबी सूची बनाई है / Usr / bin निर्देशिका और परिणामों को फ़ाइल में भेज दिया

ls-output.txt. आइए कमांड के पुनर्निर्देशित आउटपुट की जांच करें:


[मुझे@लिनक्सबॉक्स ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 मुझे मुझे 167878 2016-02-01 15:07 ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 मुझे मुझे 167878 2016-02-01 15:07 ls-output.txt


अच्छा; एक अच्छी, बड़ी, टेक्स्ट फ़ाइल। यदि हम फ़ाइल को देखें कम, हम देखेंगे कि फ़ाइल

ls-output.txt में वास्तव में हमारे ls कमांड के परिणाम शामिल हैं:


[मुझे@लिनक्सबॉक्स ~]$ कम ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ कम ls-output.txt


अब, आइए अपना पुनर्निर्देशन परीक्षण दोहराएं, लेकिन इस बार एक बदलाव के साथ। हम उस निर्देशिका का नाम बदल देंगे जो मौजूद नहीं है:



[मुझे@लिनक्सबॉक्स ~]$ ls -l /bin/usr > ls-output.txt

ls: /bin/usr तक नहीं पहुंच सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं

[मुझे@लिनक्सबॉक्स ~]$ ls -l /bin/usr > ls-output.txt

ls: /bin/usr तक नहीं पहुंच सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं


हमें एक त्रुटि संदेश प्राप्त हुआ. यह समझ में आता है क्योंकि हमने गैर-मौजूद निर्देशिका निर्दिष्ट की है /बिन/यूएसआर, लेकिन त्रुटि संदेश फ़ाइल पर पुनर्निर्देशित होने के बजाय स्क्रीन पर क्यों प्रदर्शित हुआ ls-output.txt? जवाब है कि ls प्रोग्राम अपने त्रुटि संदेश मानक आउटपुट पर नहीं भेजता है। इसके बजाय, अधिकांश अच्छी तरह से लिखे गए यूनिक्स कार्यक्रमों की तरह, यह अपने त्रुटि संदेशों को मानक त्रुटि पर भेजता है। चूँकि हमने केवल मानक आउटपुट को पुनर्निर्देशित किया था, मानक त्रुटि को नहीं, त्रुटि संदेश अभी भी स्क्रीन पर भेजा गया था। हम देखेंगे कैसे

मानक आउटपुट को पुनर्निर्देशित करना


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



[मुझे@लिनक्सबॉक्स ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 मुझे मुझे 0 2016-02-01 15:08 ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 मुझे मुझे 0 2016-02-01 15:08 ls-output.txt


फ़ाइल की लंबाई अब शून्य है! ऐसा इसलिए है, क्योंकि जब हम आउटपुट को ">" पुनर्निर्देशन ऑपरेटर के साथ पुनर्निर्देशित करते हैं, तो गंतव्य फ़ाइल हमेशा शुरुआत से फिर से लिखी जाती है। हमारे बाद से ls कमांड ने कोई परिणाम नहीं दिया और केवल एक त्रुटि संदेश उत्पन्न किया, पुनर्निर्देशन ऑपरेशन फ़ाइल को फिर से लिखने के लिए शुरू हुआ और फिर त्रुटि के कारण बंद हो गया, जिसके परिणामस्वरूप इसकी काट-छाँट हुई। वास्तव में, यदि हमें कभी किसी फ़ाइल को वास्तव में छोटा करना हो (या एक नई, खाली फ़ाइल बनानी हो) तो हम इस तरह की ट्रिक का उपयोग कर सकते हैं:



[मुझे@लिनक्सबॉक्स ~]$ > ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ > ls-output.txt


बिना किसी आदेश के केवल पुनर्निर्देशन ऑपरेटर का उपयोग करने से मौजूदा फ़ाइल को छोटा कर दिया जाएगा या एक नई, खाली फ़ाइल बनाई जाएगी।

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



[मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt


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



[मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt [मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt [मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt [मुझे@लिनक्सबॉक्स ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 मुझे मुझे 503634 2016-02-01 15:45 ls-output.txt

[मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt [मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt [मुझे@लिनक्सबॉक्स ~]$ ls -l /usr/bin >> ls-output.txt [मुझे@लिनक्सबॉक्स ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 मुझे मुझे 503634 2016-02-01 15:45 ls-output.txt


हमने कमांड को तीन बार दोहराया जिसके परिणामस्वरूप आउटपुट फ़ाइल तीन गुना बड़ी हो गई।


OnWorks पर शीर्ष OS क्लाउड कंप्यूटिंग: