क्या / देव / अशक्त है और यह आपकी मदद कैसे कर सकता है?

यदि हमारे पास पहले से ही GNU / Linux डायरेक्टरी ट्री की कुछ धारणाएँ हैं, तो हमें कम से कम / dev / संदर्भ से परिचित होना चाहिए, जो प्रभावी रूप से सभी फाइलों से संबंधित है जहाँ हार्डवेयर डिवाइस.

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

यह डैनियल डुरेंट का एक योगदान है, इस प्रकार हमारी साप्ताहिक प्रतियोगिता के विजेताओं में से एक: «लिनक्स के बारे में जो कुछ आप जानते हैं उसे साझा करें«। बधाई हो डैनियल!

डिवाइस / देव / नल किसके अनुरूप है?

व्यावहारिक उद्देश्यों के लिए, एक कचरा रहित, एक अथाह गड्ढे या बाहरी स्थान की कल्पना करें, जिसमें कुछ भी इसे ठीक करने की संभावना के बिना फेंकना (कोई फर्क नहीं पड़ता कि नासा के लोग कितनी मेहनत करते हैं)।

लेकिन अगर मेरे पास पहले से ही rm जैसे कमांड हैं, तो मैं कुछ नया क्यों हटाना चाहता हूं?

क्योंकि दोनों "ब्लैक होल" कार्य पूरी तरह से अलग हैं: आप रनटाइम पर शेल स्क्रिप्ट के भीतर कमांड में त्रुटि के मानक आउटपुट को ओवरराइड करने के बारे में कैसे जाएंगे? यह वह जगह है जहाँ / dev / null आता है।

इसे एक उदाहरण से देखते हैं।

हमने एक फाइल बनाई है जिसे "हेल्लो वर्ल्ड" स्ट्रिंग कहा जाता है। यदि हम कमांड लाइन पर उस फ़ाइल की सामग्री का प्रतिनिधित्व करना चाहते हैं, तो हम इसे निम्न तरीके से कर सकते हैं:

उपयोगकर्ता @ लैपटॉप: ~ $ बिल्ली परीक्षण
नमस्ते दुनिया

यदि फ़ाइल मौजूद नहीं थी या परीक्षण के रूप में नामित की गई थी (अंत में 's' के साथ), तो हमें कंसोल में निम्नलिखित त्रुटि मिलेगी:

उपयोगकर्ता @ लैपटॉप: ~ $ बिल्ली परीक्षण
बिल्ली: परीक्षण: फ़ाइल या निर्देशिका मौजूद नहीं है

त्रुटि संदेश से बचने के लिए हम क्या कर सकते हैं? खैर, कमांड के आउटपुट को त्रुटि के मामले में, "कचरा कर सकते हैं" के लिए पुनर्निर्देशित करें, जो कि / dev / null के लिए है

हम त्रुटि के मामले में इसे कैसे निर्दिष्ट करते हैं? यह वह जगह है जहां एक कार्यक्रम के लिए मानक इनपुट, आउटपुट और त्रुटि मान दर्ज होते हैं: STDIN, STDOUT और STDERR (जिसे क्रमशः 0, 1 और 2 के लिए प्रतिस्थापित किया जा सकता है)। इस तरह, अगर हम ...

उपयोगकर्ता @ लैपटॉप: ~ $ बिल्ली परीक्षण 2> / देव / अशक्त
उपयोगकर्ता @ लैपटॉप: ~ $

… हम देखेंगे कि कंसोल पर एरर मैसेज का उत्पादन नहीं होगा।

आपको सावधान रहना होगा क्योंकि वाक्यविन्यास आवश्यक है: वर्ण 2 और> के बीच कोई स्थान नहीं होना चाहिए। अन्यथा, यह निम्नलिखित देगा:

उपयोगकर्ता @ लैपटॉप: ~ $ बिल्ली परीक्षण 2> / देव / अशक्त
बिल्ली: परीक्षण: फ़ाइल या निर्देशिका मौजूद नहीं है
बिल्ली: 2: फ़ाइल या निर्देशिका मौजूद नहीं है

इसके विपरीत,> और / dev / null के बीच का स्थान परिणाम को नकारात्मक रूप से प्रभावित नहीं करेगा।

हम त्रुटि पुनर्निर्देशन का भी उपयोग कर सकते हैं, उदाहरण के लिए, लॉग फ़ाइल में त्रुटियों को पकड़ने के लिए निम्नानुसार है:

user @ laptop: ~ $ cat 2 परीक्षण करता है

एक और दिलचस्प मामला एक और फ़ाइल में परिणाम का संग्रह होगा जब तक कि कोई त्रुटि नहीं होती है, जिसके लिए हम डालेंगे:

उपयोगकर्ता @ लैपटॉप: ~ $ बिल्ली परीक्षण 1> output_result 2> इरेटल

अंत में, अभिव्यक्ति «> / dev / null 2> & 1» डालना संभव है, जिसमें मानक आउटपुट और त्रुटि आउटपुट संयुक्त होते हैं, उन्हें पुनर्निर्देशित करते हैं ताकि किसी भी मामले में आउटपुट जानकारी प्राप्त न हो।


8 टिप्पणियाँ, तुम्हारा छोड़ दो

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   गुइडो इग्नासियो इग्नासियो कहा

    आह, लेकिन उपयोग की जाने वाली सबसे अधिक उपयोगिताओं में से एक / dev / null गायब है, जो फाइलों को खाली कर रही है: $ cat / dev / null> file.log इस तरह से, file.log फ़ाइल खाली हो जाएगी। इसे जोड़ें!

    1.    एडुआर्डो एच कहा

      यह ठीक वैसा स्पष्टीकरण था जिसकी उन्हें तलाश थी।
      मैं इसे जोड़ने के लिए गति का समर्थन करता हूं =)

      Saludos!

  2.   पाब्लो कहा

    नमस्कार, सबसे पहले लेख बहुत अच्छा है! दूसरा मैं इस विषय पर इस लिंक के साथ कुछ योगदान देना चाहूंगा Cpanel से php में क्रोन की नौकरी और ब्लॉग के लिए तीसरी बधाई!

  3.   पाब्लो कहा

    देव / अशक्त पर अच्छा लेख, मुझे क्या शर्म की बात है कि मैंने गलती से पहले गलत जगह टिप्पणी की थी! मैं क्षमाप्रार्थी हूं

  4.   गुमनाम कहा

    अच्छा योगदान धन्यवाद

  5.   jers कहा

    अभिवादन मैं अशक्त हो रहा है। मैं andrirc का उपयोग करता हूं और मुझे Null शब्द के साथ अपने उपनाम का एक निजी मिलता है। कार्यक्रम बंद होने के 2 सेकंड बाद मैं पढ़ रहा हूं और जो मैं देख रहा हूं वह केवल शेल द्वारा किया जा सकता है, न कि किसी बाहरी व्यक्ति द्वारा। मैंने अपने आप को अनदेखा करने / अनदेखा करने की कोशिश की है -Lrpcntikd और कुछ भी नहीं मुझे आश्चर्य है कि कमान आती रहती है। यदि आपके पास इसे अवरुद्ध करने का प्रयास करने का कोई तरीका है तो मैं इसकी सराहना करूंगा। चियर्स

  6.   सोफिया मार्टिनेज कहा

    यदि वाक्य को निष्पादित करते समय क्या होता है तो प्रतीक> नहीं रखा जाता है?

    क्या कोई मेरा मार्गदर्शन कर सकता है?

  7.   शून्य कहा

    सुप्रभात, मैंने एसीईआर एक्स्टेंसा 5620Z - 32 बिट में डेबियन नेटिनस्ट स्थापित किया है। एक बार यूएसबी से इंस्टॉलेशन समाप्त हो जाने के बाद और पेनड्राइव को हटा दिया जाता है ताकि यह हार्ड डिस्क से बूट हो जाए (पेन से पुनर्स्थापित न करें) लेकिन बूटिंग के समय सिस्टम वह मुझसे पूछती है:
    डेबियन लॉगिन: XXXXXXX (ठीक है)
    पासवर्ड: xxxxxxxx (ठीक है)
    शून्य @ डेबियन: ~$ ???? यह क्या है? मुझे वहां क्या रखना चाहिए?

    इस आदेश के बिना मैं सिस्टम बूट के साथ आगे नहीं बढ़ सकता।
    क्या आप मेरी मदद कर सकते हैं? मुझे नहीं पता कि मुझे कैसे जारी रखना चाहिए।
    आपका बहुत बहुत धन्यवाद। सधन्यवाद।