آموزشچگونه

آموزش خط فرمان: قسمت هشتم، Pipeline

Print Friendly, PDF & Email

توانایی خواندن اطلاعات از ورودی استاندارد و ارسال آن به خروجی استاندارد با یک ویژگی Shell به نام Pipeline یا کاراکتر خط عمودی | ایجاد شده است.

با استفاده از عملگر خط عمودی، خروجی استاندارد یک فرمان به داخل ورودی استاندارد فرمانی دیگر ریخته می‌شود.

به عنوان مثال

با این کار فرمان اول هر خروجی که داشته باشد به داخل ورودی فرمان دوم ریخته می‌شود. برای توضیح کامل آن از فرمان less استفاده می‌شود. فرمان less فرمانی است که ورودی استاندارد را قبول می‌کند. برای توضیح کامل آن از فرمان less استفاده می‌گردد. فرمان less فرمانی است که ورودی استاندارد را قبول می‌کند.

می‌توان از فرمان less برای نمایش صفحه به صفحه خروجی هر فرمانی استفاده نمود. به عنوان مثال:

ملاحظه می‌شود با استفاده از علامت پایپ | خروجی فرمان ls –l /usr/bin را به داخل ورودی فرمان less ریخته شده است.

فیلترها

پایپ‌لاین اغلب برای انجام عملیات‌های پیچیده بر روی داده استفاده می‌شود. ممکن است که چندین فرمان را با استفاده از پایپ‌لاین به هم متصل شود. فرمان‌هایی که به این شیوه استفاده می‌شوند را فیلتر می‌نامند. فیلترها ورودی را دریافت کرده آن را تغییر داده و سپس در خروجی نمایش می‌دهند. اولین فیلتری که امتحان خواهد شد sort می‌باشد. تصور نمایید که می‌خواهیم یک لیست ترکیبی از برنامه‌های اجرایی /bin و /usr/bin ایجاد کرده و آن‌ها را مرتب کنیم و لیست را نمایش دهیم:

از آنجایی که ما دو پوشه /bin و /usr/bin را تعیین کرده‌ایم خروجی فرمان ls از دو لیست مرتب شده، یکی برای هر شاخه، ولی با اضافه کردن فیلتر sort با استفاده از پایپ‌لاین، داده در لیست مرتب شده نمایش داده می‌شود.

فرمان uniq – گزارش یا حذف خطوط تکراری

فرمان uniq همان‌طور که از نام آن برمی‌آید (به معنی یگانه و منحصر به فرد) با خطوط تکراری مشکل دارد. فرمان uniq اغلب در کنار sort به کار می‌رود. فرمان uniq یک لیست مرتب شده از داده‌ها را از ورودی استاندارد یا یک آرگومان نام فایل قبول می‌کند، و به صورت پیش‌فرض هر خط تکراری موجود در لیست را حذف می‌کند. پس برای اینکه مطمئن شویم لیست ما هیچ مورد تکراری ندارد (که در این مورد که مثال می‌زنیم نام برنامه‌هاست که در هر دو پوشه /bin و /usr/bin وجود دارد) بایستی فرمان uniq را به پایپ‌لاین‌های خود اضافه نمود:

در این مثال از فرمان uniq برای حذف هر مورد اضافی از خروجی فرمان sort استفاده شده است. اگر به جای حذف بخواهیم لیست موارد تکراری را مشاهده کنیم می‌توان از گزینه –d استفاده نمود:

فرمان wc – نمایش تعداد بایت، کلمه و خط

فرمان wc سرنام عبارت Word Count به معنی تعداد کلمات است. این فرمان به منظور نمایش تعداد خطوط، کلمات و بایت‌های موجود در فایل‌ها به کار می‌رود:

در این مورد فرمان، سه شماره را نمایش می‌دهد: تعداد خطوط (۱)، تعداد کلمات (۹) و تعداد بایت‌های موجود (۵۴) در لیست ls-output.txt. همانند فرمان‌های قبلی اگر بدون آرگومان‌های خط فرمان به کار رود، استاندارد ورودی را دریافت می‌کند. گزینه –l خروجی را محدود می‌کند و فقط تعداد خطوط را نشان می‌دهد. اضافه نمودن آن به یک پایپ‌لاین می‌تواند روش خوبی برای شمارش موارد باشد. برای مشاهده تعداد آیتم‌هایی که ما در لیست مرتب وجود دارد می‌توان فرمان زیر را به‌کار برد:

فرمان grep – نمایش خطوطی که الگوی خاصی دارند

grep یک برنامه قدرتمند است که به منظور پیدا کردن الگوی خاص متن در داخل فایل‌ها به کار می‌رود، به این صورت به کار می‌رود:

وقتی که grep با یک الگو (pattern) در فایل مواجه می‌شود، خطی که آن الگو در داخل آن وجود دارد را در صفحه‌نمایش چاپ می‌کند. الگوهایی که grep می‌تواند داشته باشد ممکن است بسیار پیچیده باشد ولی در حال حاضر چون قصد داریم تمرکز را بر روی آموزش بگذاریم، از موارد ساده استفاده می‌شود. به الگوهای پیشرفته را در درس‌های آینده پرداخته خواهد شد.

فرض کنید که می‌خواهیم همه فایل‌هایی که در داخل لیست برنامه‌ها وجود دارند و دارای کلمه zip در نام خود هستند را پیدا کنیم. چنین جستجویی می‌تواند برای یافتن فایل‌های فشرده کاربردی باشد. مثال زیر گویای مطلب است:

گزینه‌های کاربردی خوبی برای فرمان grep وجود دارد. مثلاً –i که باعث می‌شود grep هنگام اجرا بزرگی و کوچکی حروف را نادیده بگیرد. (معمولاً جستجوها حساس به بزرگی و کوچکی هستند.) همچنین گزینه –v به grep می‌گوید که فقط خطوطی را چاپ کن که با الگو مطابقت ندارند.

head/tail – بخش اول و آخر فایل‌ها را چاپ می‌کند

گاهی اوقات شما همه خروجی یک فرمان را نمی‌خواهید. شاید فقط چند خط اول و یا چند خط آخر خروجی را بخواهید. فرمان head ده خط اول و فرمان tail ده خط آخر از خروجی‌های فرمان را چاپ می‌کند. به‌صورت پیش‌فرض هر دو فرمان، ده خط از متن را چاپ می‌کنند ولی با استفاده از گزینه –n می‌توانید این مقدار را تغییر دهید.

همچنین می‌توان با پایپ‌لاین آن را ترکیب کرد:

tail گزینه‌ای دارد که به شما اجازه می‌دهد تا فایل‌ها را به‌صورت زنده و در زمان واقعی (real time) مشاهده کنید. این ویژگی برای مشاهده پیشرفت و روند فایل‌های log بسیار مفید است. در مثال زیر نگاهی به فایل‌های پیام در مسیر /var/log می‌اندازیم. به این منظور دسترسی Super User نیاز است. چون /var/log/message دارای برخی اطلاعات امنیتی است.

با استفاده از گزینه –f فرمان tail مانیتور فایل را ادامه می‌دهد و زمانی که خطوط جدیدی اضافه گردد، به‌صورت خودکار در لحظه نمایش داده می‌شوند. برای خروج از این حالت Ctrl+C را فشار دهید.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

Tags

Related Articles

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

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

Close