ما هو / dev / null وكيفية استخدامه

What Is Dev Null How Use It



Linux هو نظام تشغيل مثير للاهتمام يستضيف بعض الأجهزة الافتراضية لأغراض عديدة. بقدر ما يتعلق الأمر بالبرامج التي تعمل في النظام ، تعمل هذه الأجهزة الافتراضية كما لو كانت ملفات حقيقية. يمكن للأدوات طلب وتغذية البيانات من هذه المصادر. يتم إنشاء البيانات بواسطة نظام التشغيل بدلاً من قراءتها من قرص.

أحد الأمثلة على ذلك هو / dev / null. إنه ملف خاص موجود في كل نظام Linux. ومع ذلك ، على عكس معظم الملفات الافتراضية الأخرى ، يتم استخدامه للكتابة بدلاً من القراءة. كل ما تكتبه إلى / dev / null سيتم تجاهله ونسيانه في الفراغ. يُعرف باسم الجهاز الفارغ في نظام UNIX.







لماذا تريد التخلص من شيء ما في الفراغ؟ دعنا نتحقق من what / dev / null واستخدامه.



المتطلبات الأساسية

قبل التعمق في استخدام / dev / null ، يجب أن يكون لدينا فهم واضح لملف stdout و ستدير تدفق المعلومات. ألق نظرة على هذا في دليل متعمق على ستدين و ستدير ، و stdout .



دعونا نحصل على تحديث سريع. عندما يتم تشغيل أي أداة مساعدة لسطر الأوامر ، فإنها تولد ناتجين. يذهب الإخراج إلى stdout وينتقل الخطأ (إذا تم إنشاؤه) إلى ستدير . بشكل افتراضي ، يرتبط كل من تدفقات البيانات هذه بالمحطة.





على سبيل المثال ، سيقوم الأمر التالي بطباعة السلسلة داخل علامة الاقتباس المزدوجة. هنا ، يتم تخزين الإخراج في stdout .

$رما - طرد - قذفمرحبا بالعالم



سيُظهر لنا الأمر التالي حالة الخروج للأمر الذي تم تشغيله مسبقًا.

$رما - طرد - قذف

نظرًا لأنه تم تشغيل الأمر السابق بنجاح ، فإن حالة الخروج هي 0. وإلا ، فإن حالة الخروج ستكون مختلفة. ماذا يحدث عندما تحاول تشغيل أمر غير صالح؟

adfadsf دولار
$رما - طرد - قذف

الآن ، نحتاج إلى معرفة واصف الملف. في نظام UNIX البيئي ، هذه هي القيم الصحيحة المخصصة لملف. على حد سواء stdout (واصف الملف = 1) و ستدير (واصف الملف = 2) لها واصف ملف معين. باستخدام واصف الملف (1 و 2 في هذه الحالة) ، يمكننا إعادة توجيه ملف stdout و ستدير إلى ملفات أخرى.

بالنسبة للمبتدئين ، سيعيد المثال التالي توجيه ملف stdout من الأمر echo إلى ملف نصي. هنا ، لم نحدد واصف الملف. إذا لم يتم تحديده ، فسيستخدم bash stdout بشكل افتراضي.

$رما - طرد - قذفمرحبا بالعالم>log.txt

سيعيد الأمر التالي توجيه ملف ستدير إلى ملف نصي.

$asdfadsa2>error.txt

باستخدام / dev / null

إعادة توجيه الإخراج إلى / dev / null

الآن ، نحن جاهزون لتعلم كيفية استخدام / dev / null. أولاً ، دعنا نتحقق من كيفية تصفية الإخراج العادي والخطأ. في الأمر التالي ، سيحاول grep البحث عن سلسلة (مرحبًا ، في هذه الحالة) في الدليل / sys.

$سيطرة -rأهلا/sys/

ومع ذلك ، فإنه سينتج عنه الكثير من الأخطاء لأنه بدون امتياز الجذر ، لا يمكن لـ grep الوصول إلى عدد من الملفات. في مثل هذه الحالة ، سينتج عن أخطاء رفض الإذن. الآن ، باستخدام إعادة التوجيه ، يمكننا الحصول على إخراج أوضح.

$سيطرة -rأهلا/sys/ 2> /ديف/باطل

الإخراج يبدو أفضل بكثير ، أليس كذلك؟ لا شيئ! في هذه الحالة ، لا يمتلك grep حق الوصول إلى الكثير من الملفات ولا تحتوي الملفات التي يمكن الوصول إليها على السلسلة 'مرحبًا'.

في المثال التالي ، سنجري الأمر ping مع Google.

$بينغجوجل كوم

ومع ذلك ، لا نريد أن نرى كل نتائج اختبار الاتصال الناجحة هذه. بدلاً من ذلك ، نريد التركيز فقط على الأخطاء عندما يتعذر على برنامج ping الوصول إلى Google. كيف نفعل ذلك؟

$بينغجوجل كوم1> /ديف/باطل

هنا محتويات stdout يتم إلقاؤها إلى / dev / null ، مع ترك الأخطاء فقط.

أعد توجيه كل الإخراج إلى / dev / null

في حالات معينة ، قد لا يكون الإخراج مفيدًا على الإطلاق. باستخدام إعادة التوجيه ، يمكننا تفريغ كل المخرجات في الفراغ.

$سيطرة -rأهلا/sys/ > /ديف/باطل2> &1

دعونا نكسر هذا الأمر قليلاً. أولاً ، نحن نتخلص من كل stdout إلى / dev / null. ثم ، في الجزء الثاني ، نطلب من باش أن يرسل ستدير إلى stdout . في هذا المثال ، لا يوجد شيء يمكن إخراجه. ومع ذلك ، إذا كنت مرتبكًا ، فيمكنك دائمًا التحقق مما إذا كان الأمر قد تم تنفيذه بنجاح.

$رما - طرد - قذف

القيمة هي 2 لأن الأمر أحدث الكثير من الأخطاء.

إذا كنت تميل إلى نسيان واصف ملف stdout و ستدير ، سوف يعمل الأمر التالي بشكل جيد. إنه تنسيق أكثر عمومية للأمر السابق. على حد سواء stdout و ستدير ستتم إعادة توجيهه إلى / dev / null.

$سيطرة -rأهلا/sys/ &> /ديف/باطل

أمثلة أخرى

هذا مثير للاهتمام. تذكر أداة dd؟ إنها أداة قوية لتحويل الملفات ونسخها. تعرف على المزيد حول dd. باستخدام dd ، يمكننا اختبار سرعة القراءة التسلسلية للقرص الخاص بك. بالطبع ، إنه ليس قياسًا دقيقًا. ومع ذلك ، فإنه من المفيد جدًا إجراء اختبار سريع.

$ي لو=<ملف كبير> من=/ديف/باطلالحالة= التقدمبكالوريوس= مليونiflag= مباشر

هنا ، لقد استخدمت Ubuntu 18.04.4 ISO كملف كبير.

وبالمثل ، يمكنك أيضًا اختبار سرعة التنزيل لاتصالك بالإنترنت.

$wget -أو /ديف/باطل<رابط_الملف الكبير>

افكار اخيرة

نأمل أن يكون لديك فهم واضح لما هو هذا الملف / dev / null. إنه جهاز خاص ، إذا تمت كتابته عليه ، فإنه يتجاهل وإذا تمت القراءة منه ، فسيصبح فارغًا. الإمكانات الحقيقية لهذه الميزة المثيرة للاهتمام تكمن في نصوص bash الشيقة.

هل أنت مهتم في البرمجة النصية باش؟ الدفع دليل المبتدئين لباش البرمجة النصية .

يتمتع!