درسنامه ۱۰: استاندارد استریمها در لینوکس
آشنایی با سه جریان اصلی
برنامههای خط فرمان معمولاً با سه جریان ورودی/خروجی کار میکنند:
STDIN(Standard Input) با شمارهٔ فایل ۰، ورودی پیشفرض برنامه است که اغلب از صفحهکلید دریافت میشود.STDOUT(Standard Output) با شمارهٔ فایل ۱، خروجی معمولی برنامه است.STDERR(Standard Error) با شمارهٔ فایل ۲، پیامهای خطا و هشدار را نگه میدارد.
درک این جریانها کمک میکند رفتار برنامهها را بهتر کنترل کنید و خروجی مورد نیاز را به فایلها یا دستورات دیگر هدایت کنید.
تغییر مسیر خروجی
با عملگر > میتوان خروجی استاندارد را در فایل ذخیره کرد. اگر فایل موجود باشد بازنویسی میشود؛ برای افزودن به انتهای فایل از >> استفاده کنید.
برای هدایت خروجی خطا به فایل دیگر از 2> استفاده کنید، زیرا عدد فایل ۲ نمایندهٔ STDERR است.
اگر میخواهید خروجی عادی و خطا در یک فایل قرار بگیرند، یکی را به دیگری هدایت کنید:
تغییر مسیر ورودی
با استفاده از < میتوانید ورودی برنامه را از فایل تأمین کنید. برنامههای تعاملی که در حالت عادی منتظر تایپ کاربر هستند، در این حالت دادهها را از فایل میخوانند.
این تکنیک در خودکارسازی فرایندها و تست برنامهها بسیار کاربردی است.
استفاده از tee برای تقسیم خروجی
دستور tee خروجی برنامه را همزمان روی صفحه نمایش میدهد و داخل فایل ذخیره میکند. این کار زمانی مفید است که بخواهید خروجی را در لحظه ببینید و نسخهٔ ثبتشده هم داشته باشید.
گزینهٔ -a به tee میگوید که به انتهای فایل اضافه کند.
جمعبندی
- استریمها واحدهای پایهٔ انتقال داده هستند؛ با شناخت آنها رفتار برنامههای خط فرمان قابل پیشبینی میشود.
- ترکیب درست عملگرهای تغییر مسیر (
>,>>,<,2>,&>) به شما اجازه میدهد خروجیها را جدا کنید، ذخیره کنید یا به برنامههای دیگر بدهید. - حتی در اسکریپتهای پیچیده، این اصول ساده به شما کمک میکنند خطاها را ثبت و فرایندها را عیبیابی کنید.