tutorials / linux / chapter-17.md · utf-8 ⬇ download chapter-17.md
فصل هفدهم: ابزارهای حرفهای لینوکس
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
تمرینهای فصل هفدهم
[01]جستجو با grep.
[02]پردازش فایل با awk.
[03]ویرایش متن با sed.
[04]ساخت Pipeline.
[05]کار با tmux.
جمعبندی فصل هفدهم
در این فصل یاد گرفتیم:
- فلسفه ابزارهای لینوکس چیست.
- چگونه Pipe استفاده کنیم.
- چگونه متن را پردازش کنیم.
- چگونه با grep جستجو کنیم.
- چگونه با awk و sed کار کنیم.
- چگونه فایلها را مدیریت کنیم.
- چگونه از tmux استفاده کنیم.
- چگونه ابزارهای کوچک را ترکیب کنیم.
تسلط بر Command Line Tools تفاوت بین یک کاربر معمولی لینوکس و یک کاربر حرفهای را مشخص میکند.
کاربران حرفهای لینوکس معمولاً با ترکیب چند ابزار ساده، کارهایی انجام میدهند که در سیستمهای دیگر نیاز به نرمافزارهای بزرگ دارد.