هنگامی که خروجی یک دستور را به یک فایل یا به دستور دیگری هدایت می کنید، ممکن است متوجه شوید که پیام های خطا روی صفحه، نمایش داده می شوند. در Bash و سایر shellهای لینوکس، هنگامی که یک برنامه اجرا می شود، از سه جریان ورودی / خروجی استاندارد استفاده می کند. هر جریان توسط یک توصیفگر فایل عددی نشان داده می شود. در این آموزش با ما همراه باشید تا شما عزیزان را با نحوه تغییر مسیر stderr به stdout در Bash آشنا کنیم.
توصیفگر فایل فقط یک عدد است که یک فایل باز را نشان می دهد. جریان ورودی اطلاعات را معمولاً با تایپ در صفحه کلید به برنامه ارائه می دهد. خروجی برنامه به جریان ورودی استاندارد و پیام های خطا به جریان خطای استاندارد می رود. به طور پیش فرض، هر دو جریان ورودی و خطا بر روی صفحه، نمایش داده می شود.
تغییر مسیر راهی برای گرفتن خروجی از یک برنامه و ارسال آن به عنوان ورودی به برنامه یا فایل دیگری است. جایی که n شماره توصیف کننده فایل است، جریان ها را می توان با استفاده از عملگر n> هدایت کرد. هنگامی که n حذف می شود، به طور پیش فرض روی ۱ (جریان خروجی استاندارد) قرار می گیرد. برای مثال، دو دستور زیر یکسان هستند. هر دو خروجی دستور (stdout) را به فایل هدایت می کنند.
command > file
command 1> file
برای تغییر مسیر خطای استاندارد (stderr) از عملگر ۲> استفاده کنید:
command 2> file
می توانید stderr و stdout را در دو فایل جداگانه بنویسید:
command 2> error.txt 1> output.txt
برای جلوگیری از نمایش پیام های خطا روی صفحه، stderr را به /dev/null هدایت کنید:
command 2> /dev/null
هنگام ذخیره خروجی برنامه در یک فایل، تغییر مسیر stderr به stdout بسیار رایج است تا بتوانید همه چیز را در یک فایل واحد داشته باشید. برای تغییر مسیر stderr به stdout و ارسال پیام های خطا به همان فایل خروجی استاندارد، از موارد زیر استفاده کنید:
command > file 2>&1
> file stdout را به فایل و ۲>&1 stderr را به محل فعلی stdout هدایت کنید. ترتیب تغییر مسیر مهم است. در مثال زیر فقط stdout را به فایل هدایت می کند. زیرا stderr قبل از اینکه stdout به فایل هدایت شود به stdout هدایت می شود.
command 2>&1 > file
راه دیگر برای تغییر مسیر stderr به stdout استفاده از ساختار &> است. در Bash &> به معنای ۲>&1 است:
command &> file
درک مفهوم تغییر مسیرها و توصیفگرهای فایل هنگام کار بر روی خط فرمان بسیار مهم است. برای تغییر مسیر stderr و stdout، از ساختارهای ۲>&1 یا &> استفاده کنید.
امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊