- Created a new sitemap.xml file for better SEO. - Added a compressed version of the sitemap as sitemap.xml.gz. - Introduced extra.css for custom styles, including Persian font support (IRANSansX). - Defined font-face rules for regular and bold styles of IRANSansX. - Implemented various text styles and layout adjustments for better readability. - Enhanced Mermaid diagram styles to support Persian text rendering.
3.5 KiB
درسنامه ۱۱: ساخت پایپلاین در خط فرمان لینوکس
مفهوم پایپلاین
پایپلاین (Pipeline) به اتصال خروجی یک دستور به ورودی استاندارد دستور بعدی گفته میشود. این اتصال با کاراکتر | انجام میشود و به شما اجازه میدهد ابزارهای ساده را کنار هم قرار دهید تا کار پیچیدهتری انجام دهند.
$ ls | sort
در این مثال، ls فهرست فایلها را تولید میکند و sort همان لیست را مرتب میکند.
زنجیرههای چند مرحلهای
میتوانید چندین دستور را پشت سر هم زنجیره کنید. هر مرحله دادههای خود را به مرحلهٔ بعدی میدهد.
$ ls /etc | grep "^ssh" | sort | nl
توضیح مراحل:
ls /etc: فهرست فایلهای/etc.grep "^ssh": فیلتر کردن مواردی که باsshشروع میشوند.sort: مرتبسازی نتایج.nl: شمارهگذاری خطوط خروجی نهایی.
فیلتر کردن و جمعآوری دادهها
پایپلاینها با ابزارهای متنی مانند grep, cut, awk و wc بسیار قدرتمند میشوند.
$ ps aux | grep python | grep -v grep | wc -l
ps aux: همهٔ فرایندها را نشان میدهد.grep python: فقط فرایندهای شامل واژهٔpython.grep -v grep: حذف خطی که خودgrepتولید کرده است.wc -l: شمارش تعداد خطوط باقیمانده.
هدایت داده به فایل یا شبکه
پایپلاینها فقط محدود به نمایش در ترمینال نیستند. خروجی نهایی را میتوان با تغییر مسیر در فایل ذخیره کرد یا برای برنامههای دیگر فرستاد.
$ journalctl -n 200 | grep sshd | tee ssh-logins.txt
در این مثال خروجی فیلتر شده علاوه بر نمایش، در فایل ssh-logins.txt هم نوشته میشود.
پایپهای پیشرفته
-
command1 |& command2: این ساختار در Bash خروجی استاندارد و خطا را با هم بهcommand2میدهد. -
xargs: ورودی پایپ را به صورت آرگومانهای جدید استفاده میکند و برای اجرای دستهای دستورات مفید است.$ ls *.log | xargs -n 1 gzip -
از Bash نسخهٔ ۴ به بعد، میتوانید با
coprocپایپلاینهای تعاملی ایجاد کنید که دادهها را به صورت غیرهمزمان پردازش میکنند؛ اگرچه این فراتر از محدودهٔ این درس است.
نکات عملی
- هر مرحله باید کاری مشخص و کوچک انجام دهد؛ این فلسفهٔ «ابزارهای کوچک، کارهای بزرگ» یونیکس است.
- برای اشکالزدایی، میتوانید در میانهٔ پایپلاین دستور
teeیاcat -nقرار دهید تا ببینید دادهها در هر مرحله چه تغییری کردهاند. - پایپلاینها در اسکریپتنویسی Shell کمک میکنند بدون نوشتن برنامهٔ پیچیده، دادهها را پردازش و گزارشگیری کنید.