أحد الأمثلة على ذلك هو / 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 الشيقة.
هل أنت مهتم في البرمجة النصية باش؟ الدفع دليل المبتدئين لباش البرمجة النصية .
يتمتع!