user@linux-tutorials: ~/tutorials/17-advanced-linux-tools — linux-tutorials

tutorials / linux / chapter-17.md · utf-8 ⬇ download chapter-17.md

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

Advanced Linux Command Line Tools

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

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

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

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

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

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

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

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

مثال:

user@linux-tutorials: ~/ch-17BASH
cat file.txt | grep error | sort

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

Pipe چیست؟

Pipe با علامت:

|

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

وظیفه آن:

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

مثال:

user@linux-tutorials: ~/ch-17BASH
ls | grep txt

در اینجا:

خروجی ls

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

Redirect کردن خروجی

ذخیره خروجی:

user@linux-tutorials: ~/ch-17BASH
command > file.txt

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

user@linux-tutorials: ~/ch-17BASH
command >> file.txt

ارسال خطا:

user@linux-tutorials: ~/ch-17BASH
command 2> error.txt

دستور grep

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

کاربرد:

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

مثال:

user@linux-tutorials: ~/ch-17BASH
grep "error" logfile.txt

جستجوی Recursive با grep

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

user@linux-tutorials: ~/ch-17BASH
grep -r "keyword" folder/

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

user@linux-tutorials: ~/ch-17BASH
grep -n "text" file.txt

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

user@linux-tutorials: ~/ch-17BASH
grep -i "linux" file.txt

Regular Expression

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

مثال:

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

user@linux-tutorials: ~/ch-17BASH
grep "^[0-9]" file.txt

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

شروع خط:

^

پایان خط:

$

هر کاراکتر:

.

تکرار:

*

دستور awk

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

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

مثال:

user@linux-tutorials: ~/ch-17BASH
awk '{print $1}' file.txt

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

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

مثال:

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

user@linux-tutorials: ~/ch-17BASH
cat /etc/passwd | awk -F: '{print $1}'

دستور sed

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

کاربردها:

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

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

مثال:

user@linux-tutorials: ~/ch-17BASH
sed 's/linux/Linux/' file.txt

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

حذف خطوط با sed

حذف خط اول:

user@linux-tutorials: ~/ch-17BASH
sed '1d' file.txt

دستور cut

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

مثال:

user@linux-tutorials: ~/ch-17BASH
cut -d: -f1 /etc/passwd

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

دستور sort

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

مثال:

user@linux-tutorials: ~/ch-17BASH
sort names.txt

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

user@linux-tutorials: ~/ch-17BASH
sort -r names.txt

دستور uniq

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

مثال:

user@linux-tutorials: ~/ch-17BASH
sort names.txt | uniq

ترکیب sort و uniq

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

user@linux-tutorials: ~/ch-17BASH
sort file.txt | uniq -c

دستور xargs

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

مثال:

user@linux-tutorials: ~/ch-17BASH
find . -name "*.log" | xargs rm

find پیشرفته

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

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

user@linux-tutorials: ~/ch-17BASH
find /home -name "*.txt"

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

user@linux-tutorials: ~/ch-17BASH
find / -size +500M

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

user@linux-tutorials: ~/ch-17BASH
find . -mtime -7

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

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

مثال:

user@linux-tutorials: ~/ch-17BASH
find . -name "*.tmp" -exec rm {} \;

Wildcard ها

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

علامت *

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

مثال:

*.txt

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

علامت ؟

یک کاراکتر.

مثال:

file?.txt

Alias

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

مثال:

user@linux-tutorials: ~/ch-17BASH
alias ll="ls -la"

حالا:

user@linux-tutorials: ~/ch-17BASH
ll

اجرا می‌شود.

ذخیره Alias دائمی

برای Bash:

~/.bashrc

برای Zsh:

~/.zshrc

History حرفه‌ای

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

user@linux-tutorials: ~/ch-17BASH
history

جستجو در History

کلید:

Ctrl + R

پاک کردن History

user@linux-tutorials: ~/ch-17BASH
history -c

tmux چیست؟

tmux یک Terminal Multiplexer است.

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

مزایای tmux

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

نصب tmux

Ubuntu:

user@linux-tutorials: ~/ch-17BASH
sudo apt install tmux

اجرای tmux

user@linux-tutorials: ~/ch-17BASH
tmux

جدا شدن از Session

کلیدها:

Ctrl + B

سپس:

D

مشاهده Sessionها

user@linux-tutorials: ~/ch-17BASH
tmux ls

اتصال دوباره

user@linux-tutorials: ~/ch-17BASH
tmux attach

Vim و Neovim حرفه‌ای

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

کاربرد:

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

حالت‌های Vim

Normal Mode

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

Insert Mode

برای نوشتن.

Command Mode

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

دستورات مهم Vim

ذخیره:

:w

خروج:

:q

ذخیره و خروج:

:wq

Compression

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

gzip

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

user@linux-tutorials: ~/ch-17BASH
gzip file.txt

tar

ساخت Archive:

user@linux-tutorials: ~/ch-17BASH
tar -cvf archive.tar folder/

tar.gz

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

user@linux-tutorials: ~/ch-17BASH
tar -czvf archive.tar.gz folder/

استخراج فایل

user@linux-tutorials: ~/ch-17BASH
tar -xzvf archive.tar.gz

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

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

  • less
  • head
  • tail

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

دستور less

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

user@linux-tutorials: ~/ch-17BASH
less largefile.log

دستور head

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

user@linux-tutorials: ~/ch-17BASH
head file.txt

دستور tail

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

user@linux-tutorials: ~/ch-17BASH
tail file.txt

مشاهده زنده Log

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

user@linux-tutorials: ~/ch-17BASH
tail -f /var/log/syslog

Debug کردن Commandها

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

user@linux-tutorials: ~/ch-17BASH
bash -x script.sh

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

دستور:

user@linux-tutorials: ~/ch-17BASH
which

مثال:

user@linux-tutorials: ~/ch-17BASH
which python

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

با:

user@linux-tutorials: ~/ch-17BASH
man

مثال:

user@linux-tutorials: ~/ch-17BASH
man grep

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

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

مثال:

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

user@linux-tutorials: ~/ch-17BASH
cat logfile | grep ERROR | sort | uniq

ساخت Pipeline تحلیل Log

مثال:

تعداد خطاها:

user@linux-tutorials: ~/ch-17BASH
grep ERROR logfile | wc -l

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

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

هدف:

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

امکانات:

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

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

user@linux-tutorials: ~/ch-17BASH
grep

awk

sort

uniq

wc

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

[01]جستجو با grep.

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

[03]ویرایش متن با sed.

[04]ساخت Pipeline.

[05]کار با tmux.

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

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

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

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

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