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

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

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

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

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

stdout और stderr

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

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

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

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

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

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

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

grep -r power /sys/

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

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

ये आउटपुट को अव्यवस्थित करते हैं और उन परिणामों को ढूंढना कठिन बना देते हैं जिनकी आप तलाश कर रहे हैं। चूंकि "Permission denied" एरर 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

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

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

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

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

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

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

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

यह इरादे के अनुसार काम नहीं करेगा। ऐसा इसलिए है क्योंकि जैसे ही 2>&1 इंटरप्रेट किया जाता है, stderr को stdout पर भेजा जाता है और स्क्रीन पर प्रदर्शित होता है। अगला, 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 क्या है और इसे कैसे इंस्टॉल करें Void Linux क्या है और इसे कैसे इंस्टॉल करें

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

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

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

  1. लिनक्स में AppImage क्या है? लिनक्स में AppImage क्या है?

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