Files
khorasan-doc/docs/lesson11.md
T
nearology 99fb7f0e82 Add sitemap and styles for Persian font integration
- 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.
2026-04-28 15:27:18 +03:30

59 lines
3.5 KiB
Markdown

# درسنامه ۱۱: ساخت پایپ‌لاین در خط فرمان لینوکس
## مفهوم پایپ‌لاین
پایپ‌لاین (Pipeline) به اتصال خروجی یک دستور به ورودی استاندارد دستور بعدی گفته می‌شود. این اتصال با کاراکتر `|` انجام می‌شود و به شما اجازه می‌دهد ابزارهای ساده را کنار هم قرار دهید تا کار پیچیده‌تری انجام دهند.
```bash
$ ls | sort
```
در این مثال، `ls` فهرست فایل‌ها را تولید می‌کند و `sort` همان لیست را مرتب می‌کند.
## زنجیره‌های چند مرحله‌ای
می‌توانید چندین دستور را پشت سر هم زنجیره کنید. هر مرحله داده‌های خود را به مرحلهٔ بعدی می‌دهد.
```bash
$ ls /etc | grep "^ssh" | sort | nl
```
توضیح مراحل:
1. `ls /etc`: فهرست فایل‌های `/etc`.
2. `grep "^ssh"`: فیلتر کردن مواردی که با `ssh` شروع می‌شوند.
3. `sort`: مرتب‌سازی نتایج.
4. `nl`: شماره‌گذاری خطوط خروجی نهایی.
## فیلتر کردن و جمع‌آوری داده‌ها
پایپ‌لاین‌ها با ابزارهای متنی مانند `grep`, `cut`, `awk` و `wc` بسیار قدرتمند می‌شوند.
```bash
$ ps aux | grep python | grep -v grep | wc -l
```
- `ps aux`: همهٔ فرایندها را نشان می‌دهد.
- `grep python`: فقط فرایندهای شامل واژهٔ `python`.
- `grep -v grep`: حذف خطی که خود `grep` تولید کرده است.
- `wc -l`: شمارش تعداد خطوط باقی‌مانده.
## هدایت داده به فایل یا شبکه
پایپ‌لاین‌ها فقط محدود به نمایش در ترمینال نیستند. خروجی نهایی را می‌توان با تغییر مسیر در فایل ذخیره کرد یا برای برنامه‌های دیگر فرستاد.
```bash
$ journalctl -n 200 | grep sshd | tee ssh-logins.txt
```
در این مثال خروجی فیلتر شده علاوه بر نمایش، در فایل `ssh-logins.txt` هم نوشته می‌شود.
## پایپ‌های پیشرفته
- `command1 |& command2`: این ساختار در Bash خروجی استاندارد و خطا را با هم به `command2` می‌دهد.
- `xargs`: ورودی پایپ را به صورت آرگومان‌های جدید استفاده می‌کند و برای اجرای دسته‌ای دستورات مفید است.
```bash
$ ls *.log | xargs -n 1 gzip
```
- از Bash نسخهٔ ۴ به بعد، می‌توانید با `coproc` پایپ‌لاین‌های تعاملی ایجاد کنید که داده‌ها را به صورت غیرهمزمان پردازش می‌کنند؛ اگرچه این فراتر از محدودهٔ این درس است.
## نکات عملی
- هر مرحله باید کاری مشخص و کوچک انجام دهد؛ این فلسفهٔ «ابزارهای کوچک، کارهای بزرگ» یونیکس است.
- برای اشکال‌زدایی، می‌توانید در میانهٔ پایپ‌لاین دستور `tee` یا `cat -n` قرار دهید تا ببینید داده‌ها در هر مرحله چه تغییری کرده‌اند.
- پایپ‌لاین‌ها در اسکریپت‌نویسی Shell کمک می‌کنند بدون نوشتن برنامهٔ پیچیده، داده‌ها را پردازش و گزارش‌گیری کنید.