# تمرین ۷: پایپ‌لاین خطاگیر ## صورت سؤال در یک سیستم چند سرویس مختلف لاگ‌های خود را در دایرکتوری `~/logs` ذخیره می‌کنند. فایل‌هایی که با الگوی `service-*.log` نام‌گذاری شده‌اند ممکن است پیام‌های خطا داشته باشند. هدف شما ساخت یک پایپ‌لاین است که اطلاعات زیر را استخراج کند: 1. همهٔ فایل‌های مطابق الگو را بخوانید و فقط خطوطی که عبارت `ERROR` دارند فیلتر کنید. 2. تعداد کل پیام‌های خطا را بشمارید و نتیجه را در فایلی به نام `error-count.txt` بنویسید. 3. همزمان باید همان خروجی فیلترشده روی صفحه نمایش داده شود تا بتوانید خطاها را مشاهده کنید. 4. برای اطمینان، پیام‌های خطای فیلتر شده را نیز در فایلی به نام `errors-full.log` ذخیره کنید؛ درصورتی که فایل از قبل وجود داشته باشد باید به انتهای آن اضافه شود. ## شرایط - فرض کنید ابزار `gzip` به صورت دوره‌ای فایل‌ها را فشرده می‌کند. لازم است پایپ شما فقط فایل‌های متنی بدون فشرده‌سازی (پسوند `.log`) را پردازش کند. - اگر دستور شما هنگام اجرا با خطایی مواجه شد، پیام خطا باید در فایلی با نام `pipeline-errors.log` ذخیره شود تا بعداً بررسی شود. ## راهنمایی - برای جلوگیری از نمایش پیام‌های خطا روی صفحه، از تغییر مسیر `2>` استفاده کنید. - دستور `tee` می‌تواند خروجی را همزمان در فایل و ترمینال چاپ کند؛ برای افزودن به فایل از گزینهٔ `-a` استفاده کنید. - ترکیب `cat`, `grep`, `wc -l`, `tee` و تغییر مسیر جریان‌ها یک راه‌حل متداول برای چنین تمرینی است. هدف نهایی ساخت یک پایپ‌لاین قابل‌اعتماد و قابل‌خواندن است.