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

سرور مجازی NVMe

تغییر مسیر stderr با استفاده از دستور tee در اوبونتو

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


دستور tee ورودی استاندارد را می گیرد و به یک یا چند فایل و خروجی استاندارد می فرستد. دستور tee از لوله T-splitter مشتق شده است. به سادگی خروجی یک برنامه را تجزیه می کند تا بتوان آن را در یک فایل نشان داد و ذخیره کرد. هر دو کار را به طور همزمان انجام می دهد، خروجی را در فایل ها یا متغیرهای داده شده کپی می کند و خروجی را نمایش می دهد.

نحو:

$ سه راهی [options] [file]

گزینه ها:

  • -آ: افزودن (به جای بازنویسی فایل ها، آنها را به فایل های موجود اضافه کنید)
  • -من: وقفه ها را نادیده بگیرید (سیگنال هایی که قطع می کنند را نادیده بگیرید)

فایل ها: چندین فایل وجود دارد. داده های خروجی برای هر کدام از آنها نوشته می شود.

توصیفگر فایل پیش فرض برای process پیام های خطای نوشتن stderr است که اغلب به عنوان خطای استاندارد شناخته می شود. خطاهای استاندارد را می توان به خط فرمان در Bash ارسال کرد. این مقاله در مورد تغییر مسیر خروجی از stderr با استفاده از دستور tee در سناریوهای مختلف است.

تغییر مسیر stderr با استفاده از دستور tee

خطاهای استاندارد به خط فرمان در Bash ارسال می شوند. تغییر مسیر stderr ممکن است به شما امکان دهد پیام های خطا را در یک فایل گزارش مجزا ضبط کنید یا پیام های خطا را به طور کامل حذف کنید. ما روش تغییر مسیر stderr را با استفاده از دستور tee با مثال های زیر توضیح خواهیم داد.

پیشنهاد می‌کنیم بخوانید:  نسخه موجود یک بسته را در اوبونتو بررسی کنید

مرحله 1: یک فایل Bash ایجاد کنید

ابتدا با استفاده از دستور زیر یک فایل Bash “linux.sh” ایجاد کنید:

$ نانو linux.sh

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

مرحله 2: کد را بنویسید

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

$ #!/صندوقچه/bash

اکو سلام

1>&2 اکو جهان

توضیحات متن به طور خودکار تولید می شودتوضیحات متن به طور خودکار تولید می شود

مرحله 3: بررسی کنید که آیا فایل Bash کار می کند یا خیر

اکنون با اجرای دستور زیر در فایل Bash بررسی کنید که آیا فایل Bash به درستی کار می کند یا کد نوشته شده در آن صحیح است. terminal:

$ ./linux.sh

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

نتیجه داده شده نتیجه صحیح را به دست می دهد، که ثابت می کند کد به درستی کار می کند.

دستور دیگری که در زیر ذکر شده را اجرا کنید تا کد کار را بررسی کنید:

$ ./linux.sh >>توسعه دهنده/خالی

توضیحات متن به طور خودکار تولید می شودتوضیحات متن به طور خودکار تولید می شود

اکنون برای بررسی عملکرد کد دستور زیر را اجرا کنید:

$ ./linux.sh 2>>توسعه دهنده/خالی

توضیحات متن به طور خودکار تولید می شودتوضیحات متن به طور خودکار تولید می شود

ما خروجی مورد انتظار را گرفتیم. یعنی کد درسته

مرحله 4: stderr را به دستور tee هدایت کنید

>(…) (process جایگزینی) یک FIFO ایجاد می کند و آن را برای گوش دادن در دسترس تی قرار می دهد. سپس، از > (تغییر مسیر فایل) استفاده می کند تا STDOUT فرمان را به FIFO ارسال کند که اولین سه راهی شما در حال نظارت است.

دستور زیر stderr را به سه راه هدایت می کند. خروجی را به “/tmp/log” هدایت می کند:

$ ./linux.sh 2> >(سه راهی /tmp/ورود به سیستم)

توضیحات متن به طور خودکار تولید می شودتوضیحات متن به طور خودکار تولید می شود

اکنون فایلی را که خروجی را به آن هدایت کرده ایم، خروجی بگیرید.

$ گربه /tmp/ورود به سیستم

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

به طور پیش فرض، سه راهی به STDOUT چاپ می شود. این را در STDERR چاپ کنید.

$ (./linux.sh 2> >(سه راهی /tmp/ورود به سیستم >&2)) >>توسعه دهنده/خالی

توضیحات متن به طور خودکار تولید می شودتوضیحات متن به طور خودکار تولید می شود

نتیجه

دستور tee داده ها را از یک فایل/فایل ورودی می خواند و خروجی دریافتی را در بسیاری از فایل ها می نویسد. تغییر مسیر خطاها به stderr را می توان با کمک دستور tee انجام داد. راه های زیادی برای تغییر مسیر خروجی وجود دارد. اما در این مقاله روشی را با کمک یک مثال توضیح دادیم تا stderr را با استفاده از فایل Bash به سه راه هدایت کنیم و خروجی را نمایش دهیم. روی اوبونتو (سیستم عامل لینوکس). این مقاله برای هدایت مجدد stderr با استفاده از دستور tee مفید خواهد بود.

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

زمان انتشار: 1402-12-30 13:41:04

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

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

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