# فصل هفدهم: ابزارهای حرفه‌ای لینوکس

## Advanced Linux Command Line Tools

در فصل‌های گذشته با دستورات پایه لینوکس، مدیریت سیستم، شبکه، امنیت و سرورها آشنا شدیم.

اما کاربران حرفه‌ای لینوکس فقط از دستورهای ساده استفاده نمی‌کنند.

قدرت واقعی ترمینال لینوکس زمانی مشخص می‌شود که چندین ابزار کوچک را با یکدیگر ترکیب کنیم و عملیات‌های پیچیده را تنها با چند دستور انجام دهیم.

در این فصل با ابزارهای حرفه‌ای خط فرمان آشنا می‌شویم.

---

# فلسفه ابزارهای Unix/Linux

یکی از مهم‌ترین فلسفه‌های Unix این است:

هر ابزار باید یک کار را به بهترین شکل انجام دهد.

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

مثال:

    cat file.txt | grep error | sort

چند ابزار کوچک، یک عملیات پیچیده را انجام می‌دهند.

---

# Pipe چیست؟

Pipe با علامت:

    |

نوشته می‌شود.

وظیفه آن:

انتقال خروجی یک دستور به ورودی دستور دیگر.

مثال:

    ls | grep txt

در اینجا:

خروجی ls

به grep داده می‌شود.

---

# Redirect کردن خروجی

ذخیره خروجی:

    command > file.txt

اضافه کردن خروجی:

    command >> file.txt

ارسال خطا:

    command 2> error.txt

---

# دستور grep

grep یکی از مهم‌ترین ابزارهای جستجو در لینوکس است.

کاربرد:

پیدا کردن متن داخل فایل‌ها.

مثال:

    grep "error" logfile.txt

---

# جستجوی Recursive با grep

برای جستجو در تمام فایل‌های یک پوشه:

    grep -r "keyword" folder/

---

# نمایش شماره خط

    grep -n "text" file.txt

---

# جستجوی بدون حساسیت به حروف

    grep -i "linux" file.txt

---

# Regular Expression

Regex روشی برای جستجوی الگوهای متنی است.

مثال:

پیدا کردن خطوطی که با عدد شروع می‌شوند:

    grep "^[0-9]" file.txt

---

# کاراکترهای Regex مهم

شروع خط:

    ^


پایان خط:

    $


هر کاراکتر:

    .


تکرار:

    *

---

# دستور awk

awk یک ابزار قدرتمند برای پردازش متن است.

بیشتر برای کار با جدول‌ها و ستون‌ها استفاده می‌شود.

مثال:

    awk '{print $1}' file.txt

ستون اول را نمایش می‌دهد.

---

# استفاده از awk با فایل‌های سیستم

مثال:

مشاهده کاربران:

    cat /etc/passwd | awk -F: '{print $1}'

---

# دستور sed

sed ابزار ویرایش متن است.

کاربردها:

- جایگزینی متن
- حذف خطوط
- تغییر فایل‌ها

---

# جایگزینی متن با sed

مثال:

    sed 's/linux/Linux/' file.txt

linux را به Linux تغییر می‌دهد.

---

# حذف خطوط با sed

حذف خط اول:

    sed '1d' file.txt

---

# دستور cut

برای جدا کردن بخش‌هایی از متن استفاده می‌شود.

مثال:

    cut -d: -f1 /etc/passwd

نام کاربران را نمایش می‌دهد.

---

# دستور sort

برای مرتب‌سازی متن استفاده می‌شود.

مثال:

    sort names.txt

---

# مرتب‌سازی معکوس

    sort -r names.txt

---

# دستور uniq

برای حذف خطوط تکراری استفاده می‌شود.

مثال:

    sort names.txt | uniq

---

# ترکیب sort و uniq

برای شمارش موارد تکراری:

    sort file.txt | uniq -c

---

# دستور xargs

xargs خروجی یک دستور را به عنوان ورودی دستور دیگر استفاده می‌کند.

مثال:

    find . -name "*.log" | xargs rm

---

# find پیشرفته

find برای پیدا کردن فایل‌ها استفاده می‌شود.

---

# جستجو بر اساس نام

    find /home -name "*.txt"

---

# جستجو بر اساس حجم

    find / -size +500M

---

# جستجو بر اساس زمان تغییر

    find . -mtime -7

فایل‌های تغییر داده شده در ۷ روز اخیر.

---

# اجرای دستور روی فایل‌های پیدا شده

مثال:

    find . -name "*.tmp" -exec rm {} \;

---

# Wildcard ها

Wildcard برای انتخاب الگوها استفاده می‌شود.

---

# علامت *

هر تعداد کاراکتر.

مثال:

    *.txt

تمام فایل‌های txt.

---

# علامت ؟

یک کاراکتر.

مثال:

    file?.txt

---

# Alias

Alias برای کوتاه کردن دستورات استفاده می‌شود.

مثال:

    alias ll="ls -la"

حالا:

    ll

اجرا می‌شود.

---

# ذخیره Alias دائمی

برای Bash:

    ~/.bashrc

برای Zsh:

    ~/.zshrc

---

# History حرفه‌ای

مشاهده دستورات قبلی:

    history

---

# جستجو در History

کلید:

    Ctrl + R

---

# پاک کردن History

    history -c

---

# tmux چیست؟

tmux یک Terminal Multiplexer است.

به کاربر اجازه می‌دهد چندین Session ترمینال را مدیریت کند.

---

# مزایای tmux

- چند ترمینال در یک پنجره
- باقی ماندن Session پس از قطع SSH
- مدیریت بهتر سرورها

---

# نصب tmux

Ubuntu:

    sudo apt install tmux

---

# اجرای tmux

    tmux

---

# جدا شدن از Session

کلیدها:

    Ctrl + B

سپس:

    D

---

# مشاهده Sessionها

    tmux ls

---

# اتصال دوباره

    tmux attach

---

# Vim و Neovim حرفه‌ای

Vim یک ویرایشگر قدرتمند در محیط ترمینال است.

کاربرد:

- ویرایش فایل‌های سرور
- برنامه‌نویسی
- مدیریت سیستم

---

# حالت‌های Vim

Normal Mode

برای حرکت و دستورها.


Insert Mode

برای نوشتن.


Command Mode

برای اجرای فرمان‌ها.

---

# دستورات مهم Vim

ذخیره:

    :w

خروج:

    :q

ذخیره و خروج:

    :wq

---

# Compression

لینوکس ابزارهای مختلفی برای فشرده‌سازی دارد.

---

# gzip

فشرده‌سازی فایل:

    gzip file.txt

---

# tar

ساخت Archive:

    tar -cvf archive.tar folder/

---

# tar.gz

ساخت فایل فشرده:

    tar -czvf archive.tar.gz folder/

---

# استخراج فایل

    tar -xzvf archive.tar.gz

---

# کار با فایل‌های بزرگ

برای فایل‌های بزرگ بهتر است از ابزارهایی مانند:

- less
- head
- tail

استفاده کنیم.

---

# دستور less

مشاهده فایل بدون باز کردن کامل:

    less largefile.log

---

# دستور head

نمایش ابتدای فایل:

    head file.txt

---

# دستور tail

نمایش انتهای فایل:

    tail file.txt

---

# مشاهده زنده Log

یکی از کاربردهای مهم:

    tail -f /var/log/syslog

---

# Debug کردن Commandها

برای فهمیدن اجرای Script:

    bash -x script.sh

---

# بررسی مسیر دستورات

دستور:

    which

مثال:

    which python

---

# اطلاعات دستور

با:

    man

مثال:

    man grep

---

# ترکیب ابزارها

قدرت لینوکس در ترکیب ابزارها است.

مثال:

پیدا کردن خطاها:

    cat logfile | grep ERROR | sort | uniq

---

# ساخت Pipeline تحلیل Log

مثال:

تعداد خطاها:

    grep ERROR logfile | wc -l

---

# پروژه عملی فصل

## ساخت ابزار تحلیل Log

هدف:

ساخت Script برای تحلیل فایل Log.

امکانات:

- تعداد خطاها
- تعداد کاربران
- نمایش IPهای پرتکرار
- مرتب‌سازی نتایج

ابزارهای استفاده شده:

    grep

    awk

    sort

    uniq

    wc

---

# تمرین‌های فصل هفدهم

## تمرین اول

جستجو با grep.


## تمرین دوم

پردازش فایل با awk.


## تمرین سوم

ویرایش متن با sed.


## تمرین چهارم

ساخت Pipeline.


## تمرین پنجم

کار با tmux.

---

# جمع‌بندی فصل هفدهم

در این فصل یاد گرفتیم:

- فلسفه ابزارهای لینوکس چیست.
- چگونه Pipe استفاده کنیم.
- چگونه متن را پردازش کنیم.
- چگونه با grep جستجو کنیم.
- چگونه با awk و sed کار کنیم.
- چگونه فایل‌ها را مدیریت کنیم.
- چگونه از tmux استفاده کنیم.
- چگونه ابزارهای کوچک را ترکیب کنیم.

تسلط بر Command Line Tools تفاوت بین یک کاربر معمولی لینوکس و یک کاربر حرفه‌ای را مشخص می‌کند.

کاربران حرفه‌ای لینوکس معمولاً با ترکیب چند ابزار ساده، کارهایی انجام می‌دهند که در سیستم‌های دیگر نیاز به نرم‌افزارهای بزرگ دارد.
