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

سرور مجازی NVMe

stdout و stderr را به File هدایت کنید

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


هنگامی که هر خروجی دستوری را به یک فایل هدایت می کنید، متوجه خواهید شد که پیام های خطا چاپ شده اند روی را terminal پنجره هر دستوری که در هر پوسته لینوکس اجرا شود، مانند bash، از سه جریان ورودی/خروجی معمولی استفاده می کند. یک توصیفگر فایل عددی برای نمایش هر جریان استفاده می شود.

  • جریان ورودی استاندارد (stdin): 0
  • جریان خروجی استاندارد (stdout): 1
  • جریان خطای استاندارد (stderr): 2

در این پست، اطلاعاتی را که تحت هدایت کردن stdout و stderr به فایل قرار دارند، درک خواهیم کرد.

خروجی استاندارد (stdout):

هر سیستم عامل مبتنی بر روی لینوکس یک مکان پیش فرض برای دستور اجرا شده قانع شده است. همه از این مفهوم به عنوان “stdout” یا “خروجی استاندارد” یاد می کنند تا راحت تر به نظر برسد. پوسته Bash یا Zsh شما دائماً به دنبال مکان خروجی پیش فرض است. هنگامی که پوسته خروجی جدید را تشخیص می دهد، آن را نمایش می دهد روی را terminal صفحه نمایش برای شما برای دیدن آن. در غیر این صورت خروجی را به محل پیش فرض خود ارسال می کند.

خطای استاندارد (stderr):

خطای استاندارد یا stderr مشابه ورودی و خروجی استاندارد است، اما برای ذخیره پیام های خطا استفاده می شود. خطای استاندارد را می توان با استفاده از a به خط فرمان یا یک فایل هدایت کرد terminal. اگر می خواهید پیام ها را در یک فایل گزارش جداگانه ضبط یا ذخیره کنید یا پیام های خطا را مخفی کنید، تغییر مسیر stderr به شما کمک می کند. حالا بیایید به سمت عملی تغییر مسیر stdout و stderr برویم.

پیشنهاد می‌کنیم بخوانید:  bc برای انجام عملیات حسابی پیشرفته در BASH

تغییر مسیر stdout و stderr به یک فایل:

همانطور که تغییر مسیر روشی برای گرفتن خروجی برنامه و ارسال آن به عنوان ورودی به دستور یا فایل دیگری است. جریان های ورودی/خروجی را می توان با استفاده از عملگر n> هدایت کرد، جایی که n شماره توصیف کننده فایل است. برای تغییر مسیر stdout، از “1>” استفاده می کنیم و برای stderr، “2>” به عنوان عملگر اضافه می شود.

ما یک فایل به نام “sample.txt” ایجاد کرده ایم تا خروجی هدایت شده را در فهرست فعلی خود ذخیره کنیم.

stdout و stderr را به File هدایت کنید

(command > file) به عنوان عملگر تغییر مسیر کلاسیک در نظر گرفته می شود که تنها خروجی استاندارد را با خطای استاندارد نشان داده شده در terminal. ما گزینه های مختلفی را برای تغییر مسیر stderr نیز نشان خواهیم داد.

تغییر مسیر stderr و stdout به فایل های جداگانه:

در زیر دستور دستور برای تغییر مسیر stdout و stderr به فایل‌های جداگانه آمده است.

فرمان > بیرون 2>خطا

دستور زیر خروجی را به فایل “out” و پیام های خطا را به فایل “error” هدایت می کند.

$ گربه sample.txt > بیرون 2>خطا

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

تغییر مسیر stderr به stdout:

این یک روش معمول است که stderr را با خروجی استاندارد یک برنامه هدایت کنید تا همه چیز را در یک فایل ذخیره کنید. در اینجا دستور دستور برای تغییر مسیر stderr به stdout آمده است:

فرمان >بیرون 2>&1
$ ls > samplefile.txt 2>&1

$ گربه samplefile.txt

> out redirects stdout را به samplefile.txt هدایت می کند و 2>&1 stderr را به مکان فعلی stdout هدایت می کند.

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

اگر stderr ابتدا به stdout هدایت می شود، از دستور زیر استفاده کنید تا stdout را به یک فایل هدایت کنید.

فرمان 2>&1 > فایل
$ ls -ال 2>&1 > samplefile.txt

$ گربه samplefile.txt

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

“&>” نیز برای همان عملکردی که “2>&1” انجام می دهد استفاده می شود.

فرمان &> فایل
$ ls &> samplefile.txt

پیشنهاد می‌کنیم بخوانید:  برای تکرار از طریق یک آرایه، حلقه «For» را بشکنید

$ گربه samplefile.txt

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

تغییر مسیر stdout و stderr به یک فایل:

همه پوسته ها از این تغییر جهت فرم پشتیبانی نمی کنند، اما bash و Zsh از آن پشتیبانی می کند. Stdout و stderr را می توان با استفاده از نحو زیر هدایت کرد.

فرمان &> بیرون
$ گربه sample.txt &> بیرون

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

در بخش بعدی مقاله، مثال جداگانه ای را برای تغییر مسیر stdout و stderr بررسی خواهیم کرد.

تغییر مسیر stdout به یک فایل:

خروجی استاندارد با “1” در لیست اعداد توصیفگر فایل نشان داده می شود. برای دستور تغییر مسیر بدون هیچ شماره توصیفگر فایل، terminal مقدار آن را روی “1” قرار دهید. سینتکس برای تغییر مسیر stdout به یک فایل به شرح زیر است:

فرمان > فایل

ما از “sample.file” برای ذخیره خروجی استاندارد دستور “ls -al” استفاده می کنیم

$ ls -ال > sample.txt

$ گربه sample.txt

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

فرمان 1> فایل
$ ls 1> sample.txt

$ گربه sample.txt

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

تغییر مسیر stderr به یک فایل:

از عملگر “2>” برای هدایت مجدد stderr به یک فایل استفاده کنید.

فرمان 2> فایل
$ ls -ال 2> sample.txt

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

ما می توانیم اجرای stderr و stdout را در یک دستور تغییر مسیر واحد ترکیب کنیم.

فرمان 2> error.txt 1> output.txt

در مثال زیر، پیام‌های خطا در «error.txt» ذخیره می‌شوند، جایی که «output.txt» خروجی استاندارد «فرمان ls» را خواهد داشت.

$ ls 2> error.txt 1> output.txt

$ گربه output.txt

stdout و stderr را به File هدایت کنیدstdout و stderr را به File هدایت کنید

نتیجه:

داشتن مفهوم تغییر مسیر و توصیف کننده فایل برای جریان های I/O هنگام کار در لینوکس بسیار ارزشمند است. terminal. در این پست در مورد جریان های ورودی/خروجی معمولی از جمله stdout و stderr صحبت کرده ایم. بخش اول این پست اطلاعات دقیقی در مورد تغییر مسیر، جریان های ورودی/خروجی و توصیفگر فایل عددی به شما ارائه می دهد. در مرحله بعد، مثال عملی برای اشکال مختلف تغییر مسیر stdout و stderr را مشاهده کرده اید.

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

زمان انتشار: 1402-12-30 22:17:03

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

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

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