از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
stdout و stderr را به File هدایت کنید
سرفصلهای مطلب
هنگامی که هر خروجی دستوری را به یک فایل هدایت می کنید، متوجه خواهید شد که پیام های خطا چاپ شده اند روی را terminal پنجره هر دستوری که در هر پوسته لینوکس اجرا شود، مانند bash، از سه جریان ورودی/خروجی معمولی استفاده می کند. یک توصیفگر فایل عددی برای نمایش هر جریان استفاده می شود.
- جریان ورودی استاندارد (stdin): 0
- جریان خروجی استاندارد (stdout): 1
- جریان خطای استاندارد (stderr): 2
در این پست، اطلاعاتی را که تحت هدایت کردن stdout و stderr به فایل قرار دارند، درک خواهیم کرد.
خروجی استاندارد (stdout):
هر سیستم عامل مبتنی بر روی لینوکس یک مکان پیش فرض برای دستور اجرا شده قانع شده است. همه از این مفهوم به عنوان “stdout” یا “خروجی استاندارد” یاد می کنند تا راحت تر به نظر برسد. پوسته Bash یا Zsh شما دائماً به دنبال مکان خروجی پیش فرض است. هنگامی که پوسته خروجی جدید را تشخیص می دهد، آن را نمایش می دهد روی را terminal صفحه نمایش برای شما برای دیدن آن. در غیر این صورت خروجی را به محل پیش فرض خود ارسال می کند.
خطای استاندارد (stderr):
خطای استاندارد یا stderr مشابه ورودی و خروجی استاندارد است، اما برای ذخیره پیام های خطا استفاده می شود. خطای استاندارد را می توان با استفاده از a به خط فرمان یا یک فایل هدایت کرد terminal. اگر می خواهید پیام ها را در یک فایل گزارش جداگانه ضبط یا ذخیره کنید یا پیام های خطا را مخفی کنید، تغییر مسیر stderr به شما کمک می کند. حالا بیایید به سمت عملی تغییر مسیر stdout و stderr برویم.
تغییر مسیر stdout و stderr به یک فایل:
همانطور که تغییر مسیر روشی برای گرفتن خروجی برنامه و ارسال آن به عنوان ورودی به دستور یا فایل دیگری است. جریان های ورودی/خروجی را می توان با استفاده از عملگر n> هدایت کرد، جایی که n شماره توصیف کننده فایل است. برای تغییر مسیر stdout، از “1>” استفاده می کنیم و برای stderr، “2>” به عنوان عملگر اضافه می شود.
ما یک فایل به نام “sample.txt” ایجاد کرده ایم تا خروجی هدایت شده را در فهرست فعلی خود ذخیره کنیم.
(command > file) به عنوان عملگر تغییر مسیر کلاسیک در نظر گرفته می شود که تنها خروجی استاندارد را با خطای استاندارد نشان داده شده در terminal. ما گزینه های مختلفی را برای تغییر مسیر stderr نیز نشان خواهیم داد.
تغییر مسیر stderr و stdout به فایل های جداگانه:
در زیر دستور دستور برای تغییر مسیر stdout و stderr به فایلهای جداگانه آمده است.
دستور زیر خروجی را به فایل “out” و پیام های خطا را به فایل “error” هدایت می کند.
تغییر مسیر stderr به stdout:
این یک روش معمول است که stderr را با خروجی استاندارد یک برنامه هدایت کنید تا همه چیز را در یک فایل ذخیره کنید. در اینجا دستور دستور برای تغییر مسیر stderr به stdout آمده است:
$ گربه samplefile.txt
> out redirects stdout را به samplefile.txt هدایت می کند و 2>&1 stderr را به مکان فعلی stdout هدایت می کند.
اگر stderr ابتدا به stdout هدایت می شود، از دستور زیر استفاده کنید تا stdout را به یک فایل هدایت کنید.
$ گربه samplefile.txt
“&>” نیز برای همان عملکردی که “2>&1” انجام می دهد استفاده می شود.
$ گربه samplefile.txt
تغییر مسیر stdout و stderr به یک فایل:
همه پوسته ها از این تغییر جهت فرم پشتیبانی نمی کنند، اما bash و Zsh از آن پشتیبانی می کند. Stdout و stderr را می توان با استفاده از نحو زیر هدایت کرد.
در بخش بعدی مقاله، مثال جداگانه ای را برای تغییر مسیر stdout و stderr بررسی خواهیم کرد.
تغییر مسیر stdout به یک فایل:
خروجی استاندارد با “1” در لیست اعداد توصیفگر فایل نشان داده می شود. برای دستور تغییر مسیر بدون هیچ شماره توصیفگر فایل، terminal مقدار آن را روی “1” قرار دهید. سینتکس برای تغییر مسیر stdout به یک فایل به شرح زیر است:
ما از “sample.file” برای ذخیره خروجی استاندارد دستور “ls -al” استفاده می کنیم
$ گربه sample.txt
$ گربه sample.txt
تغییر مسیر stderr به یک فایل:
از عملگر “2>” برای هدایت مجدد stderr به یک فایل استفاده کنید.
ما می توانیم اجرای stderr و stdout را در یک دستور تغییر مسیر واحد ترکیب کنیم.
در مثال زیر، پیامهای خطا در «error.txt» ذخیره میشوند، جایی که «output.txt» خروجی استاندارد «فرمان ls» را خواهد داشت.
$ گربه output.txt
نتیجه:
داشتن مفهوم تغییر مسیر و توصیف کننده فایل برای جریان های I/O هنگام کار در لینوکس بسیار ارزشمند است. terminal. در این پست در مورد جریان های ورودی/خروجی معمولی از جمله stdout و stderr صحبت کرده ایم. بخش اول این پست اطلاعات دقیقی در مورد تغییر مسیر، جریان های ورودی/خروجی و توصیفگر فایل عددی به شما ارائه می دهد. در مرحله بعد، مثال عملی برای اشکال مختلف تغییر مسیر stdout و stderr را مشاهده کرده اید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-30 22:17:03