وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

2>/dev/null دقیقا چه کاری انجام می دهد؟

0 14
زمان لازم برای مطالعه: 4 دقیقه


چه کاربر جدید لینوکس باشید و چه با تجربه bash برنامه نویس، به احتمال زیاد با دستور رمزی 2>/dev/null مواجه شده اید. اگرچه این دستور از نظر فنی پیچیده به نظر می رسد، اما هدف آن بسیار ساده است. به یک دستگاه تهی اشاره دارد که برای سرکوب خروجی دستورات مختلف استفاده می شود. این مقاله هر بخش از دستور 2>/dev/null را تجزیه می‌کند، هدف آن را توضیح می‌دهد و نمونه‌هایی از روش استفاده از آن را مشاهده می‌کند.

دستگاه پوچ – ‘/dev/null’

تمامی سیستم های مبتنی بر لینوکس دارای ویژگی به نام دستگاه های مجازی هستند. این دستگاه های مجازی مانند فایل های واقعی در سیستم عامل تعامل دارند. عملکرد چنین دستگاه های مجازی شبیه به دستگاه های واقعی است. آنها برای نوشتن و خواندن داده ها استفاده می شوند. تفاوت اصلی بین این دو این است که داده های دستگاه های مجازی توسط سیستم عامل تامین می شود.

/dev/null یک دستگاه null است – نوع خاصی از دستگاه مجازی. در هر سیستم لینوکس وجود دارد و هدف این دستگاه دور انداختن هر چیزی است که به آن ارسال می شود و انتهای فایل (EOF) را می خواند. بیشتر دستگاه های مجازی برای خواندن داده ها استفاده می شوند. با این حال، /dev/null منحصر به فرد است زیرا برای سرکوب هر داده ای که روی آن نوشته شده است استفاده می شود. به عبارت ساده، برای هر داده ای که در سیستم عامل لینوکس روی آن نوشته می شود، به عنوان سیاه چاله عمل می کند.

حال، اجازه دهید نگاهی به قسمت های باقی مانده از دستور 2 > /dev/null بیاندازیم

توصیف کننده فایل – ‘2’

هر دستوری که در لینوکس اجرا می‌شود، سه فایل مرتبط تولید می‌کند: ورودی استاندارد، خروجی استاندارد و فایل‌های خطای استاندارد. سیستم عامل لینوکس به هر یک از این فایل ها با یک عدد صحیح غیر منفی منحصر به فرد اشاره می کند.

  • ‘0’ برای ورودی استاندارد
  • ‘1’ برای خروجی استاندارد
  • “2” برای خطای استاندارد

اصطلاحات فنی ورودی استاندارد، خروجی استاندارد و جریان های خطای استاندارد به ترتیب stdin، stdout و stderr هستند.

می دانیم که عدد ‘2’ در دستور ‘2>/dev/null’ به جریان خطای استاندارد (stderr) اشاره دارد.

عملگر تغییر مسیر فایل – ‘>’

نماد ‘>’ به عنوان عملگر تغییر مسیر فایل شناخته می شود. هدف آن هدایت آنچه در سمت چپ آن است به دستورات است روی سمت راست. به عبارت ساده‌تر، هر رشته داده در سمت چپ به سمت راست اپراتور هدایت می‌شود.

پیشنهاد می‌کنیم بخوانید:  تفاوت #!/bin/sh و #!/bin/ چیست؟bash?

تا کنون، هدف هر جزء از دستور 2>/dev/null را درک کرده ایم. جریان خطا را به /dev/null ارسال می کند که آن را دور می زند. به عبارت دیگر، از این دستور برای حذف و سرکوب خروجی های خطا استفاده می شود. با این حال، اگر شما یک کهنه کار با تجربه لینوکس هستید، می توانید با اجرای دستور زیر در فایل /dev/null به محتویات فایل /dev/null نگاه کنید. terminal:

$ ls /توسعه دهنده/خالی

2>/dev/null دقیقا چه کاری انجام می دهد؟

این دستور معمولاً در سناریوهایی استفاده می شود که باید خروجی را بر اساس فیلتر کنیم روی خطاها یا زمانی که می خواهیم خروجی های مرتبط با توضیحات اشتباه را کنار بگذاریم. با حرکت رو به جلو، نمونه هایی از کاربرد آن را بررسی خواهیم کرد روی یک سیستم اوبونتو

با استفاده از 2>/dev/null

از آنجایی که می دانیم دستور 2>/dev/null برای حذف خطاها استفاده می شود، همیشه همراه با دستورات دیگر استفاده می شود. در مثال های زیر رویکرد مشابهی را مشاهده خواهیم کرد. می توانید باز کنید terminal یا با دسترسی به آن از طریق منوی برنامه ها یا با استفاده از میانبر صفحه کلید Ctrl + Alt + T.

در مثال اول، ما در فهرست /sys/ برای یک رشته تصادفی جستجو می کنیم (در این مورد helloworld). دستور جستجو grep است و آرگومان آن رشته جستجو خواهد بود. برای جستجوی رشته خود دستور زیر را وارد کنید.

$ grep -r سلام دنیا /سیستم/

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

این فرمان جستجو به دلیل اینکه بدون دسترسی ریشه مورد استفاده قرار می گیرد، خطاهای متعددی را نمایش می دهد. جریان خطای آن را با استفاده از دستور 2>/dev/null به /dev/null ارسال می کنیم تا این خطاها را حذف کنیم.

$ grep -r سلام دنیا /سیستم/ 2> /توسعه دهنده/خالی

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

می بینیم که خروجی دستور بسیار منظم تر و ساده تر از دستور قبلی است. دلیل آن این است که خطاها با استفاده از 2> /dev/null حذف می شوند و از آنجایی که دستور grep قادر به یافتن فایلی مطابق با رشته ما ‘helloworld’ نیست، هیچ خروجی را نشان نمی دهد.

برای درک بهتر استفاده از /dev/null، به مثال زیر پینگ کردن هر وب سایتی (در مورد ما google.com) نگاه خواهیم کرد. با اجرای دستور زیر می توانید google.com را پینگ کنید:

$ پینگ google.com

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

اگر بخواهیم تمام پینگ های ناموفق را حذف کنیم، می توانیم از دستور 2>/dev/null استفاده کنیم:

$ پینگ google.com 2> /توسعه دهنده/خالی

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

در این حالت، جریان خطای استاندارد (که پینگ‌های ناموفق را به google.com نشان می‌دهد) به دستگاه مجازی /dev/null ارسال می‌شود که آنها را دور می‌اندازد.

پیشنهاد می‌کنیم بخوانید:  روش جایگزینی چندین خط با استفاده از دستور "sed".

با این حال، اگر بخواهیم فقط پینگ های ناموفق را ببینیم، می توانیم دستور زیر را اجرا کنیم:

$ پینگ google.com 1> /توسعه دهنده/خالی

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

در اینجا، جریان خروجی استاندارد (stdout) را به دستگاه /dev/null ارسال می کنیم که آن را دور می اندازد. در نتیجه، تنها پینگ هایی باقی می مانند که به سرور google.com نرسیدند. با این حال، در مورد ما، پینگ ناموفق وجود نداشت. ما همچنین می توانیم stdout و stderr را به مکان های مختلف هدایت کنیم. اگر بخواهیم خروجی را کنار بگذاریم و خطاها را در یک گزارش ذخیره کنیم یا برعکس، مفید است. می‌توانید دستور زیر را اجرا کنید تا پینگ‌های ناموفق را در یک گزارش خطا ذخیره کنید و در عین حال خروجی استاندارد دستور ping را کنار بگذارید:

$ پینگ google.com 1> /توسعه دهنده/خالی 2> error.log

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

در مواقعی، ممکن است بخواهید تمام خروجی یک فرمان (از جمله خروجی استاندارد و خطاهای استاندارد) را سرکوب کنید. ما می‌توانیم با استفاده از دستگاه /dev/null به شیوه‌ای متفاوت به این هدف برسیم. برای سرکوب تمام خروجی ها می توانید دستور زیر را تایپ کنید:

$ پینگ google.com >>توسعه دهنده/خالی 2>&1

2>/dev/null دقیقا چه کاری انجام می دهد؟2>/dev/null دقیقا چه کاری انجام می دهد؟

توجه داشته باشید که ترتیب دستورات در اینجا بسیار مهم است. پس از اجرای دستور ping، ‘>/dev/null’ به سیستم می گوید که خروجی را سرکوب کند، و ‘2>&1’ جریان خطای استاندارد را به خروجی استاندارد هدایت می کند. به این ترتیب، تمام خروجی دستور حذف می شود.

نتیجه

ما دستور 2>/dev/null و مثال‌های ساده را در این مقاله تشریح کرده‌ایم، و امیدواریم اکنون متوجه شوید که هر بیت از آن چه می‌کند. با این حال، این فقط نوک کوه یخ است. دستگاه های پوچ به روش های مختلفی استفاده می شوند bash برنامه نویسی. برخی از کاربردهای پیشرفته‌تر عبارتند از بررسی وجود فایل، نصب خودکار بسته‌ها و جلوگیری از اجرا شدن اسکریپت‌ها به استثناهای ناخواسته.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-30 20:07:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید