هدایت خروجی استاندارد

منتشر شده در دسته : خط فرمان لینوکس

چه دلیلی برای هدایت خروجی استاندارد وجود دارد ؟ هدایت خروجی استاندارد چگونه انجام می شود ؟ در این درس درباره این موضوعات گفتگو خواهیم کرد.

هدایت خروجی استاندارد

I/O Redirection به ما اجازه می دهد تا مسیری که خروجی می رود را دوباره تعریف کنیم . به منظور تغییرجهت و هدایت خروجی استاندارد به یک فایل دیگر به جای هدایت به صفحه نمایش ما از عملگر هدایت یعنی کاراکتر) > ( استفاده می کنیم و در ادامه آن نام فایل را می آوریم . اصلا به چه دلیل چنین کاری را می کنیم ؟! اینکه خروجی یک دستور را درون یک فایل ذخیره کنیم , گاها مفید خواهد بود . برای مثال ما می توانیم به خط فرمان بگوییم که خروجی دستور ls را به فایل ls-output.txt بفرست بجای اینکه آن را در صفحه نمایش نشان بده .

تغییر مسیر (Redirection) خروجی استاندارد
در اینجا ما یک لیست بلند از پوشه /usr/bin ایجاد کردیم و نتایج را به فایل ls-output.txt فرستادیم .خوب بیایید خروجی دستور را آزمایش کنیم :

تغییر مسیر (Redirection) خروجی استاندارد
خوبه . یک فایل متنی بلند . اگر محتوای فایل را با دستور less بررسی کنیم خواهیم دید که فایل ls-output.txt در واقع حاوی نتایجی از دستور ls می باشد .
خوب حالا بیایید آزمون هدایت را این بار با کمی پیچیدگی انجام دهیم . ما نام پوشه را به چیزی که وجود ندارد تغییر می دهیم :

تغییر مسیر (Redirection) خروجی استاندارد

یک پیام خطا دریافت کردیم . این کاملا منطقی است چونکه ما یک پوشه ای که وجود ندارد را اختصاص داده ایم . ولی چرا پیام خطا بر روی صفحه نمایش نشان داده شده بجای اینکه در فایل ls-output.txt ذخیره گردد ؟؟! پاسخ این است که برنامه ls پیام های خطای خود را به یک خروجی استاندارد ارسال نمی کند . بجای آن شبیه بیشتر برنامه های خوب لینوکس این دستور پیامی های خطا را به Standard Error یا خطای استاندارد ارسال می کند و از آنجایی که ما فقط خروجی استاندارد Standard Output را هدایت کردیم و نه Standard Error در نتیجه هنوز پیام های خطا در صفحه نمایش نشان داده می شوند . در درس های بعدی نحوه هدایت فایل Standard Error را نمایش خواهیم داد ولی قبل از آن نگاهی دوباره به فایل خروجی خود بیندازیم . با دستور زیر اطلاعات کامل این فایل را نمایش می دهیم .

تغییر مسیر (Redirection) خروجی استاندارد

این فایل اکنون اندازه و حجم آن صفر است . به این دلیل که وقتی ما با استفاده از عملگر > هدایت خروجی را انجام می دهیم , فایل مقصد همیشه از اول شروع به نوشتن می کند . از آنجایی که دستور ls ما هیچ نتیجه ای ایجاد نکرده و فقط یک پیام خطا نمایش داده , عملیات هدایت شروع به نوشتن فایل از اول کرده و سپس به دلیل خطا نتایجی ثبت شده حذف شده . در حقیقت ما هر وقت بخواهیم نتایج فایل را حذف کنیم می توانیم از یک چنین حقه ای استفاده کنیم .

تغییر مسیر (Redirection) خروجی استاندارد

بسادگی با بکار بردن عملگر هدایت بدون هیچ دستوری نتایج فایل را حذف می کنیم و یک فایل جدید خالی ایجاد می کنیم . خوب حالا چه کنیم که نتایج قبلی حذف نشوند و نتایج جدید به ادامه فایل اضافه شود ؟ برای انجام این کار بایستی از عملگر >> برای هدایت (Redirection) استفاده کنیم . به مثال زیر توجه کنید :

تغییر مسیر (Redirection) خروجی استاندارد
با این کار ما نتیجه دستور را سه بار تکرار کردیم که در نتیجه آن اندازه فایل سه برابر افزایش می یابد .

تغییر مسیر (Redirection) خروجی استاندارد

لیست دروس

خوشحال می شویم دیدگاههای خود را در میان بگذارید * فرصت پاسخگویی به سوالات در بلاگ وجود ندارد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *