लिनक्स/यूनिक्स में इनपुट आउटपुट रीडायरेक्शन के उदाहरण
पुनर्निर्देशन क्या है?
रीडायरेक्शन लिनक्स में एक ऐसी सुविधा है जिसके द्वारा आप कमांड निष्पादित करते समय मानक इनपुट/आउटपुट डिवाइस को बदल सकते हैं। किसी भी लिनक्स ऑपरेटिंग सिस्टम का मूल वर्कफ़्लो लिनक्स कमांड यह एक इनपुट लेता है और एक आउटपुट देता है।
- मानक इनपुट (stdin) डिवाइस कीबोर्ड है।
- मानक आउटपुट (stdout) डिवाइस स्क्रीन है।
पुनर्निर्देशन के साथ, उपरोक्त मानक इनपुट/आउटपुट को बदला जा सकता है।
क्लिक करें यहाँ उत्पन्न करें यदि वीडियो उपलब्ध न हो
आउटपुट पुनर्निर्देशन
RSI '>' प्रतीक का उपयोग आउटपुट (STDOUT) पुनर्निर्देशन के लिए किया जाता है।
उदाहरण:
ls -al > listings
यहां कमांड ls -al का आउटपुट आपकी स्क्रीन के बजाय फ़ाइल “लिस्टिंग्स” पर पुनः निर्देशित किया जाता है।
नोट: कमांड आउटपुट को किसी फ़ाइल पर रीडायरेक्ट करते समय सही फ़ाइल नाम का उपयोग करें। यदि उसी नाम की कोई मौजूदा फ़ाइल है, तो रीडायरेक्ट किया गया कमांड उस फ़ाइल की सामग्री को हटा देगा और फिर उसे ओवरराइट किया जा सकता है।”
यदि आप किसी फ़ाइल को अधिलेखित नहीं करना चाहते हैं, लेकिन मौजूदा फ़ाइल में अधिक सामग्री जोड़ना चाहते हैं, तो आपको इसका उपयोग करना चाहिए '>>' ऑपरेटर.
आप मानक आउटपुट को न केवल फाइलों पर, बल्कि डिवाइसों पर भी पुनर्निर्देशित कर सकते हैं!
$ cat music.mp3 > /dev/audio
कैट कमांड फ़ाइल music.mp3 को पढ़ता है और आउटपुट को /dev/audio पर भेजता है जो ऑडियो डिवाइस है। यदि आपके पीसी में ध्वनि कॉन्फ़िगरेशन सही है, तो यह कमांड फ़ाइल music.mp3 चलाएगा
इनपुट पुनर्निर्देशन
RSI '' प्रतीक का उपयोग इनपुट(STDIN) पुनर्निर्देशन के लिए किया जाता है
उदाहरण: लिनक्स में मेल प्रोग्राम आपको टर्मिनल से ईमेल भेजने में मदद कर सकता है।
आप मानक डिवाइस कीबोर्ड का उपयोग करके ईमेल की सामग्री टाइप कर सकते हैं। लेकिन अगर आप ईमेल में फ़ाइल संलग्न करना चाहते हैं तो आप निम्न प्रारूप में इनपुट री-डायरेक्शन ऑपरेटर का उपयोग कर सकते हैं।
Mail -s "Subject" to-address < Filename
इससे फ़ाइल ईमेल के साथ संलग्न हो जाएगी और वह प्राप्तकर्ता को भेज दी जाएगी।
उपरोक्त उदाहरण सरल थे। आइए कुछ उन्नत पुनर्निर्देशन तकनीकों पर नज़र डालें जो फ़ाइल का उपयोग करती हैं Descriptओआरएस।
पट्टिका Descriptओआरएस (एफडी)
लिनक्स/यूनिक्स में, सब कुछ एक फ़ाइल है। नियमित फ़ाइल, निर्देशिकाएँ और यहाँ तक कि डिवाइस भी फ़ाइलें हैं। हर फ़ाइल से जुड़ी एक संख्या होती है जिसे फ़ाइल कहते हैं Descriptया (एफडी).
आपकी स्क्रीन पर भी एक फ़ाइल है Descriptया. जब कोई प्रोग्राम निष्पादित होता है तो आउटपुट फ़ाइल में भेजा जाता है Descriptया स्क्रीन के, और आप अपने मॉनिटर पर प्रोग्राम आउटपुट देखते हैं। यदि आउटपुट फ़ाइल में भेजा जाता है Descriptया प्रिंटर का, प्रोग्राम आउटपुट प्रिंट हो गया होगा।
त्रुटि पुनर्निर्देशन
जब भी आप टर्मिनल पर कोई प्रोग्राम/कमांड निष्पादित करते हैं, तो 3 फाइलें हमेशा खुली रहती हैं, अर्थात, मानक इनपुट, मानक आउटपुट, मानक त्रुटि.
जब भी कोई प्रोग्राम चलाया जाता है, ये फ़ाइलें हमेशा मौजूद रहती हैं। जैसा कि पहले बताया गया है, इनमें से प्रत्येक फ़ाइल के साथ एक फ़ाइल डिस्क्रिप्टर जुड़ा होता है।
पट्टिका | पट्टिका Descriptor |
---|---|
मानक इनपुट STDIN | 0 |
मानक आउटपुट STDOUT | 1 |
मानक त्रुटि STDERR | 2 |
डिफ़ॉल्ट रूप से, त्रुटि स्ट्रीम स्क्रीन पर प्रदर्शित होती है। त्रुटि पुनर्निर्देशन त्रुटियों को स्क्रीन के अलावा किसी अन्य फ़ाइल पर रूट कर रहा है।
त्रुटि पुनर्निर्देशन क्यों?
त्रुटि पुनर्निर्देशन बहुत लोकप्रिय सुविधाओं में से एक है यूनिक्स / लिनक्स.
अक्सर यूनिक्स का उपयोग करने वाले लोग यह मानते होंगे कि कई कमांड्स भारी मात्रा में त्रुटियाँ देते हैं।
- उदाहरण के लिए, फ़ाइलों की खोज करते समय, आम तौर पर अनुमति अस्वीकृत त्रुटियाँ मिलती हैं। ये त्रुटियाँ आम तौर पर किसी विशेष फ़ाइल की खोज करने वाले व्यक्ति की मदद नहीं करती हैं।
- शेल स्क्रिप्ट निष्पादित करते समय, आप अक्सर नहीं चाहते कि त्रुटि संदेश सामान्य प्रोग्राम आउटपुट को अव्यवस्थित कर दें।
इसका समाधान त्रुटि संदेशों को पुनः फ़ाइल में भेजना है।
उदाहरण 1
$ myprogram 2>errorsfile
ऊपर हम myprogram नामक प्रोग्राम निष्पादित कर रहे हैं।
मानक त्रुटि के लिए फ़ाइल डिस्क्रिप्टर 2 है।
“2>” का उपयोग करके हम त्रुटि आउटपुट को “errorfile” नामक फ़ाइल पर पुनः निर्देशित करते हैं
इस प्रकार, प्रोग्राम आउटपुट त्रुटियों से भरा नहीं होता।
उदाहरण 2
यहाँ एक और उदाहरण दिया गया है जिसमें find कथन का उपयोग किया गया है –
find . -name 'my*' 2>error.log
“find” कमांड का उपयोग करके, हम “.” वर्तमान निर्देशिका में “my” से शुरू होने वाले “name” वाली फ़ाइल खोज रहे हैं
उदाहरण 3: आइये एक अधिक जटिल उदाहरण देखें,
सर्वर प्रशासक अक्सर निर्देशिकाओं को सूचीबद्ध करते हैं और त्रुटि और मानक आउटपुट दोनों को एक फ़ाइल में संग्रहीत करते हैं, जिसे बाद में संसाधित किया जा सकता है। यहाँ कमांड है।
ls Documents ABC> dirlist 2>&1
यहाँ,
- जो एक फ़ाइल के आउटपुट को दूसरी फ़ाइल के इनपुट में लिखता है। 2>&1 का अर्थ है कि STDERR STDOUT के लक्ष्य पर पुनर्निर्देशित करता है (जो फ़ाइल निर्देशिका है)
- हम त्रुटि आउटपुट को मानक आउटपुट पर रीडायरेक्ट कर रहे हैं जिसे बदले में फ़ाइल dirlist पर रीडायरेक्ट किया जा रहा है। इसलिए, दोनों आउटपुट फ़ाइल dirlist में लिखे गए हैं
सारांश
- लिनक्स में प्रत्येक फ़ाइल की एक संगत फ़ाइल होती है Descriptया उससे जुड़े
- कीबोर्ड मानक इनपुट डिवाइस है जबकि आपकी स्क्रीन मानक आउटपुट डिवाइस है
- “>” आउटपुट रीडायरेक्शन ऑपरेटर है। “>>” आउटपुट को मौजूदा फ़ाइल में जोड़ता है
- “<” इनपुट पुनर्निर्देशन ऑपरेटर है
- ">&" एक फ़ाइल के आउटपुट को दूसरी फ़ाइल में पुनर्निर्देशित करता है।
- आप संबंधित फ़ाइल का उपयोग करके त्रुटि को पुनर्निर्देशित कर सकते हैं Descriptया 2