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

लिनक्स में /dev/null क्या है?

लिनक्स में /dev/null क्या है?

तकनीकी शब्दों में, "/ dev/null" एक वर्चुअल डिवाइस फ़ाइल है। जहां तक ​​कार्यक्रमों का संबंध है, इन्हें वास्तविक फाइलों की तरह ही माना जाता है। उपयोगिताएँ इस प्रकार के स्रोत से डेटा का अनुरोध कर सकती हैं, और ऑपरेटिंग सिस्टम उन्हें डेटा खिलाता है। लेकिन, डिस्क से पढ़ने के बजाय, ऑपरेटिंग सिस्टम इस डेटा को गतिशील रूप से उत्पन्न करता है। ऐसी फ़ाइल का एक उदाहरण “/dev/zero” है।

इस मामले में, हालांकि, आप एक डिवाइस फ़ाइल को लिखेंगे। आप जो कुछ भी "/ dev / null" को लिखते हैं, उसे छोड़ दिया जाता है, भुला दिया जाता है, शून्य में फेंक दिया जाता है। यह समझने के लिए कि यह क्यों उपयोगी है, आपको सबसे पहले Linux या *nix प्रकार के ऑपरेटिंग सिस्टम में मानक आउटपुट और मानक त्रुटि की बुनियादी समझ होनी चाहिए।

stdout और stder

एक कमांड-लाइन उपयोगिता दो प्रकार के आउटपुट उत्पन्न कर सकती है। मानक आउटपुट stdout को भेजा जाता है। त्रुटियाँ stderr को भेजी जाती हैं।

डिफ़ॉल्ट रूप से, stdout और stderr आपकी टर्मिनल विंडो (या कंसोल) से जुड़े होते हैं। इसका मतलब है कि stdout और stderr को भेजी गई कोई भी चीज़ आपकी स्क्रीन पर सामान्य रूप से प्रदर्शित होती है। लेकिन शेल पुनर्निर्देशन के माध्यम से, आप इस व्यवहार को बदल सकते हैं। उदाहरण के लिए, आप किसी फ़ाइल पर stdout को पुनर्निर्देशित कर सकते हैं। इस तरह, स्क्रीन पर आउटपुट प्रदर्शित करने के बजाय, यह आपके लिए बाद में पढ़ने के लिए एक फ़ाइल में सहेजा जाएगा - या आप स्टडआउट को किसी भौतिक डिवाइस, जैसे डिजिटल एलईडी या एलसीडी डिस्प्ले पर रीडायरेक्ट कर सकते हैं।

लिनक्स में /dev/null क्या है?

यदि आप और जानना चाहते हैं तो पाइप और पुनर्निर्देशन के बारे में एक पूरा लेख उपलब्ध है।

  • 2> के साथ आप मानक त्रुटि संदेशों को पुनर्निर्देशित करते हैं। उदाहरण:2>/dev/null या 2>/home/user/error.log
  • 1> के साथ आप मानक आउटपुट को पुनर्निर्देशित करते हैं।
  • &> के साथ आप मानक त्रुटि और मानक आउटपुट दोनों को पुनर्निर्देशित करते हैं।

उस आउटपुट से छुटकारा पाने के लिए /dev/null का उपयोग करें जिसकी आपको आवश्यकता नहीं है

चूंकि आउटपुट दो प्रकार के होते हैं, मानक आउटपुट और मानक त्रुटि, पहला उपयोग केस एक प्रकार या दूसरे को फ़िल्टर करना है। एक व्यावहारिक उदाहरण के माध्यम से समझना आसान है। मान लें कि आप पावर सेटिंग्स को संदर्भित करने वाली फ़ाइलों को खोजने के लिए "/ sys" में एक स्ट्रिंग की तलाश कर रहे हैं।

grep -r power /sys/

बहुत सारी फाइलें होंगी जिन्हें एक नियमित, गैर-रूट उपयोगकर्ता नहीं पढ़ सकता है। इसके परिणामस्वरूप कई "अनुमति अस्वीकृत" त्रुटियां होंगी।

लिनक्स में /dev/null क्या है?

ये आउटपुट को अव्यवस्थित करते हैं और उन परिणामों को खोजना कठिन बनाते हैं जिनकी आप तलाश कर रहे हैं। चूंकि "अनुमति अस्वीकृत" त्रुटियां stderr का हिस्सा हैं, इसलिए आप उन्हें "/ dev/null" पर रीडायरेक्ट कर सकते हैं।

grep -r power /sys/ 2>/dev/null
लिनक्स में /dev/null क्या है?

जैसा कि आप देख सकते हैं, इसे पढ़ना बहुत आसान है।

अन्य मामलों में, रिवर्स करना उपयोगी हो सकता है:मानक आउटपुट को फ़िल्टर करें ताकि आप केवल त्रुटियां देख सकें।

ping google.com 1>/dev/null
लिनक्स में /dev/null क्या है?

ऊपर दिया गया स्क्रीनशॉट दिखाता है कि, पुनर्निर्देशित किए बिना, पिंग अपने सामान्य आउटपुट को प्रदर्शित करता है जब वह गंतव्य मशीन तक पहुंच सकता है। दूसरे कमांड में, नेटवर्क ऑनलाइन होने पर कुछ भी प्रदर्शित नहीं होता है, लेकिन जैसे ही यह डिस्कनेक्ट हो जाता है, केवल त्रुटि संदेश प्रदर्शित होते हैं।

आप stdout और stderr दोनों को दो अलग-अलग स्थानों पर पुनर्निर्देशित कर सकते हैं।

ping google.com 1>/dev/null 2>error.log

इस मामले में, स्टडआउट संदेश बिल्कुल भी प्रदर्शित नहीं होंगे, और त्रुटि संदेशों को "error.log" फ़ाइल में सहेजा जाएगा।

सभी आउटपुट को /dev/null पर रीडायरेक्ट करें

कभी-कभी सभी आउटपुट से छुटकारा पाना उपयोगी होता है। ऐसा करने के दो तरीके हैं।

grep -r power /sys/ >/dev/null 2>&1

स्ट्रिंग >/dev/null इसका अर्थ है "stdout को /dev/null पर भेजें," और दूसरा भाग, 2>&1 , का अर्थ है stderr को stdout पर भेजना। इस मामले में आपको केवल "1" के बजाय स्टडआउट को "&1" के रूप में संदर्भित करना होगा। “2>1” लिखने से स्टडआउट को “1” नाम की फ़ाइल पर रीडायरेक्ट कर दिया जाएगा।

यहां ध्यान देने योग्य बात यह है कि आदेश महत्वपूर्ण है। अगर आप रीडायरेक्ट पैरामीटर को इस तरह उलट देते हैं:

grep -r power /sys/ 2>&1 >/dev/null

यह इरादा के अनुसार काम नहीं करेगा। ऐसा इसलिए है क्योंकि जैसे ही 2>&1 व्याख्या की जाती है, stderr को stdout पर भेजा जाता है और स्क्रीन पर प्रदर्शित किया जाता है। अगला, "/ dev/null" पर भेजे जाने पर स्टडआउट दबा दिया जाता है। अंतिम परिणाम यह है कि आप सभी आउटपुट को दबाने के बजाय स्क्रीन पर त्रुटियां देखेंगे। अगर आपको सही क्रम याद नहीं है, तो एक आसान रीडायरेक्ट है जो टाइप करना बहुत आसान है:

grep -r power /sys/ &>/dev/null

इस मामले में, &>/dev/null "इस स्थान पर stdout और stderr दोनों को पुनर्निर्देशित करें" कहने के बराबर है।

अन्य उदाहरण जहां /dev/null पर रीडायरेक्ट करना उपयोगी हो सकता है

मान लें कि आप देखना चाहते हैं कि आपकी डिस्क अनुक्रमिक डेटा को कितनी तेज़ी से पढ़ सकती है। परीक्षण अत्यंत सटीक नहीं है लेकिन पर्याप्त सटीक है। आप dd का उपयोग कर सकते हैं इसके लिए, लेकिन dd या तो stdout को आउटपुट करता है या किसी फ़ाइल को लिखने का निर्देश दिया जा सकता है। of=/dev/null . के साथ आप dd को इस वर्चुअल फ़ाइल में लिखने के लिए कह सकते हैं। आपको यहां शेल पुनर्निर्देशन का उपयोग करने की भी आवश्यकता नहीं है। if= पढ़ने के लिए इनपुट फ़ाइल का स्थान निर्दिष्ट करता है; of= आउटपुट फ़ाइल का नाम निर्दिष्ट करता है, जहाँ लिखना है।

dd if=debian-disk.qcow2 of=/dev/null status=progress bs=1M iflag=direct
लिनक्स में /dev/null क्या है?

कुछ परिदृश्यों में, आप यह देखना चाहेंगे कि आप किसी सर्वर से कितनी तेजी से डाउनलोड कर सकते हैं। लेकिन आप अनावश्यक रूप से अपनी डिस्क पर नहीं लिखना चाहते हैं। बस इतना ही, नियमित फ़ाइल में न लिखें, "/dev/null" पर लिखें।

wget -O /dev/null https://ftp.halifax.rwth-aachen.de/ubuntu-releases/18.04/ubuntu-18.04.2-desktop-amd64.iso

निष्कर्ष

उम्मीद है, इस लेख के उदाहरण आपको “/dev/null” का उपयोग करने के अपने स्वयं के रचनात्मक तरीके खोजने के लिए प्रेरित कर सकते हैं।

इस विशेष डिवाइस फ़ाइल के लिए एक दिलचस्प उपयोग-मामला जानें? नीचे एक टिप्पणी छोड़ें और ज्ञान साझा करें!


  1. शून्य लिनक्स क्या है और इसे कैसे स्थापित करें

    Void Linux एक Linux वितरण है जिसका उद्देश्य एक शक्तिशाली, फिर भी आसान-से-दृष्टिकोण, ऑपरेटिंग सिस्टम प्रदान करना है। इसे सरल और स्थिर दोनों तरह से डिज़ाइन किया गया है और इसे रनिट और अपने स्वयं के हल्के पैकेज प्रबंधक के उपयोग के माध्यम से प्राप्त किया जाता है। आर्क लिनक्स के समान, शून्य लिनक्स एक रोल

  1. LVFS क्या है और मैं इसका उपयोग कैसे करूँ?

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

  1. Linux में AppImage क्या है?

    लिनक्स डिस्ट्रो पर, जब भी संभव हो, आपको अपने पैकेज मैनेजर की सहायता से हमेशा नया सॉफ्टवेयर इंस्टॉल करना चाहिए। यह चीजों को साफ रखता है, और सभी फाइलों को प्रबंधक द्वारा ट्रैक किया जाता है और बाद में आसानी से हटाया जा सकता है। जब आप बाद में अपने वितरण को अपग्रेड करते हैं तो यह संभावित परेशानी से बचने