اگر میخواهید لینوکس را اصولی یاد بگیرید، حفظ کردن صدها Command بهتنهایی کافی نیست.
لینوکس زمانی واقعاً در ذهنتان میماند که با آن کار کنید:
- فایل بسازید و جابهجا کنید
- Permissionها را تغییر دهید
- با SSH به Server وصل شوید
- Processها را مدیریت کنید
- Logها را بررسی کنید
- Web Server راهاندازی کنید
- مشکلات واقعی سیستم را حل کنید
به همین دلیل بهترین مسیر یادگیری Linux ترکیبی از مطالعه، تمرین، Challenge و کار با یک Server واقعی است.
در این مقاله از معین گیفت ۶ منبع رایگان و کاربردی را معرفی میکنیم که میتوانند شما را از اولین Commandهای Linux تا مدیریت یک Server واقعی همراهی کنند.
منابعی که بررسی میکنیم:
- Linux Journey
- The Linux Command Line
- OverTheWire: Bandit
- Linux Upskill Challenge
- ExplainShell
- ArchWiki
چرا حفظ کردن دستورات لینوکس کافی نیست؟
یکی از اشتباهات رایج افراد تازهکار این است که سعی میکنند فهرست بزرگی از Commandها را حفظ کنند:
ls
cd
cp
mv
rm
grep
find
chmod
chown
ps
kill
systemctl
journalctl
اما معمولاً چند روز بعد بیشتر آنها فراموش میشوند.
روش بهتر این است که هر دستور را هنگام حل یک مسئله واقعی یاد بگیرید.
مثلاً وقتی واقعاً لازم باشد فایل بزرگی را در Server پیدا کنید، دستور:
find
خیلی بهتر در ذهن شما باقی میماند.
یا وقتی یک Service از کار افتاده باشد و برای پیدا کردن دلیل مشکل از:
systemctl
journalctl
استفاده کنید، مفهوم مدیریت Serviceها بسیار بهتر از خواندن یک لیست Command در ذهن میماند.
مرحله اول: Linux Journey؛ یادگیری لینوکس از صفر
اگر تقریباً هیچ تجربهای با Linux ندارید، Linux Journey یکی از بهترین نقاط شروع است.
Linux Journey از مفاهیم کاملاً پایه شروع میکند و مرحلهبهمرحله شما را وارد دنیای Linux میکند.
موضوعات آن شامل مواردی مثل:
- Linux چیست؟
- Distributionها
- Command Line
- File System
- Text Processing
- Permissions
- Processها
- Packages
- Networking
است.
Linux Journey حالا کجاست؟
نسخه اصلی Linux Journey سالها روی:
linuxjourney.com
قرار داشت.
این پروژه حالا بهصورت رسمی بخشی از LabEx شده و محتوای Linux Journey در پلتفرم جدید ادامه پیدا کرده است.
یکی از نکات خوب نسخه جدید، اضافه شدن محیطهای Hands-on است؛ یعنی میتوانید بعضی Commandها را مستقیماً در Terminal داخل Browser تمرین کنید.
برای شروع:
از Linux Journey چه چیزهایی یاد بگیریم؟
در مرحله اول لازم نیست همه بخشهای پیشرفته را تمام کنید.
روی این موارد تمرکز کنید:
- Navigation در File System
- ساخت و حذف فایل و Directory
- Copy و Move
- خواندن فایلها
- Search
- Permissions
- Processها
- Package Management
وقتی با این مفاهیم راحت شدید، سراغ مرحله بعد بروید.
مرحله دوم: The Linux Command Line؛ تسلط واقعی بر ترمینال
بعد از آشنایی اولیه با Linux، یکی از بهترین منابع برای عمیقتر شدن:
The Linux Command Line
نوشته William Shotts است.
این کتاب یکی از شناختهشدهترین منابع آموزشی Command Line لینوکس محسوب میشود.
نسخه Internet Edition آن بهصورت رایگان در دسترس است.
کتاب چه چیزهایی آموزش میدهد؟
مطالب کتاب از Commandهای پایه شروع میشود و به موضوعات پیشرفتهتر میرسد:
- Navigation
- File Manipulation
- Redirection
- Pipelines
- grep
- find
- Regular Expressions
- Permissions
- Process Management
- Package Management
- Networking
- Shell Scripting
نسخه جدید کتاب
نسخه اینترنتی فعلی کتاب به Seventh Internet Edition رسیده و همچنان PDF رایگان آن از سایت رسمی نویسنده قابل دریافت است.
برای مطالعه:
دانلود رایگان The Linux Command Line →
لازم نیست کتاب را از اول تا آخر حفظ کنید
روش بهتر این است که همزمان با خواندن کتاب، Terminal باز باشد.
مثلاً وقتی درباره Pipe میخوانید:
ps aux | grep nginx
را واقعاً اجرا کنید.
وقتی درباره Redirection میخوانید:
ls -la > files.txt
را امتحان کنید.
هدف این است که هر Concept را با استفاده واقعی همراه کنید.
مرحله سوم: OverTheWire Bandit؛ لینوکس را با بازی یاد بگیرید
بعد از اینکه Commandهای اولیه را یاد گرفتید، وقت آن است که آنها را در محیطی واقعیتر تمرین کنید.
یکی از بهترین منابع برای این کار:
OverTheWire: Bandit
است.
Bandit یک Wargame آموزشی برای افراد مبتدی است.
شما از Level 0 شروع میکنید و برای رسیدن به مرحله بعد باید یک مسئله را با Command Line حل کنید.
مثلاً اولین مراحل Bandit چگونه هستند؟
در شروع باید با SSH به Server بازی وصل شوید:
ssh bandit0@bandit.labs.overthewire.org -p 2220
سپس باید Password مرحله بعد را داخل Fileها پیدا کنید.
کمکم با Commandهایی مثل:
ls
cd
cat
file
find
grep
sort
uniq
strings
base64
ssh
کار خواهید کرد.
چرا Bandit بسیار مفید است؟
Bandit جواب را مستقیماً به شما نمیدهد.
یک Goal مشخص میدهد و شما باید بفهمید:
با چه Command یا ترکیبی از Commandها میتوانم این مسئله را حل کنم؟
همین فرآیند Problem Solving باعث میشود Commandها بسیار بهتر در ذهن بمانند.
شروع Challenge:
بعد از Bandit چه؟
اگر به Cybersecurity هم علاقه داشته باشید، OverTheWire مسیرهای بیشتری دارد.
ترتیب پیشنهادی خود پروژه بعد از Bandit شامل Challengeهایی در حوزههایی مثل:
- Web Security
- Cryptography
- Reverse Engineering
- Binary Exploitation
است.
اما اگر هدف اصلی شما Linux Administration است، لازم نیست تمام Wargameها را ادامه دهید.
مرحله چهارم: Linux Upskill Challenge؛ وارد مدیریت Server شوید
تا اینجا Commandهای Linux را یاد گرفتهاید.
حالا باید وارد مرحلهای شوید که Linux واقعاً روی یک Server استفاده میشود.
یکی از بهترین منابع برای این کار:
Linux Upskill Challenge
است.
این پروژه یک دوره رایگان و Open Source برای یادگیری مدیریت یک Linux Server از طریق Command Line است.
Linux Upskill Challenge چطور کار میکند؟
دوره اصلی حدود:
۲۰ روز کاری
تمرین دارد.
در حالت Community، دوره از اولین دوشنبه ماه شروع میشود، اما مطالب Core در تمام طول سال هم قابل دسترسی هستند.
هر روز یک موضوع جدید را روی Server واقعی تمرین میکنید.
در این دوره چه چیزهایی یاد میگیرید؟
موضوعات شامل:
- SSH
- User Management
- File Permissions
- Package Management
- Process Management
- systemd
- Logs
- Web Server
- Cron
- Networking
- Firewall
- Security
- Backup
است.
باید یک Server داشته باشید
یکی از نقاط قوت این Challenge این است که فقط Simulation نیست.
برای دوره بهتر است یک Linux Server داشته باشید.
میتوانید از:
- VirtualBox
- یک کامپیوتر قدیمی
- VPS
- AWS
- Azure
- Google Cloud
- DigitalOcean
استفاده کنید.
برای شروع حتی یک Ubuntu Server داخل Virtual Machine کافی است.
لینک دوره:
شروع Linux Upskill Challenge →
چرا این مرحله برای DevOps مهم است؟
اگر قصد دارید وارد حوزههایی مثل:
- DevOps
- Cloud Engineering
- System Administration
- Backend Infrastructure
- Cybersecurity
شوید، صرفاً بلد بودن چند Command کافی نیست.
باید بتوانید یک Server را اداره کنید.
مثلاً:
systemctl status nginx
را اجرا کنید، Log را ببینید:
journalctl -u nginx
Portهای باز را بررسی کنید:
ss -tulpn
و Permission یا Firewall را عیبیابی کنید.
مرحله پنجم: ExplainShell؛ دستورات پیچیده را بفهمید
گاهی یک Command در اینترنت میبینید که شبیه این است:
find . -type f -name "*.log" -mtime +7 -exec rm {} \;
اگر تازهکار باشید، شاید ندانید هر قسمت دقیقاً چه کاری انجام میدهد.
اینجاست که:
ExplainShell
بسیار کاربردی میشود.
ExplainShell چه کاری انجام میدهد؟
Command را داخل سایت Paste میکنید.
ExplainShell تلاش میکند Command و Optionهای آن را با Manual Pageها تطبیق دهد و توضیح دهد که هر بخش چه کاری انجام میدهد.
مثلاً برای:
tar xzvf archive.tar.gz
میتوانید معنی هر Flag را جداگانه بررسی کنید.
لینک ابزار:
ExplainShell را جای man نگذارید
یکی از عادتهایی که باید از همان ابتدای مسیر Linux یاد بگیرید استفاده از Manual است.
مثلاً:
man grep
یا:
man find
ExplainShell برای درک سریع Commandهای پیچیده فوقالعاده است، اما بهتر است در کنار آن به استفاده از:
man
--help
هم عادت کنید.
مرحله ششم: ArchWiki؛ دانشنامهای برای حل مشکلات Linux
وقتی کمی حرفهایتر شوید، یکی از منابعی که احتمالاً بارها در Google با آن روبهرو خواهید شد:
ArchWiki
است.
ArchWiki مستندات جامعه Arch Linux است و هزاران صفحه درباره موضوعات مختلف Linux دارد.
از جمله:
- Networking
- systemd
- Drivers
- Storage
- Boot
- Security
- Audio
- Graphics
- Virtualization
- Power Management
آیا ArchWiki فقط برای Arch Linux است؟
بخشی از مطالب آن مخصوص Arch است؛ مخصوصاً Commandهای Package Management و بعضی مسیرهای Configuration.
اما تعداد زیادی از توضیحات درباره:
- Linux Kernel
- systemd
- NetworkManager
- SSH
- File Systems
- Drivers
در Distributionهای دیگر هم کاربرد مفهومی دارند.
اگر Ubuntu یا Debian استفاده میکنید، قبل از Copy کردن Commandها حتماً بررسی کنید که نام Packageها و مسیر فایلها برای Distribution شما یکسان باشند.
ورود به ArchWiki:
مسیر پیشنهادی یادگیری Linux از صفر
اگر نمیدانید این منابع را با چه ترتیبی استفاده کنید، مسیر پیشنهادی میتواند این باشد:
Linux Journey
↓
مفاهیم پایه Linux
↓
OverTheWire Bandit
↓
تمرین واقعی Commandها
↓
The Linux Command Line
↓
درک عمیقتر Terminal و Bash
↓
Linux Upskill Challenge
↓
مدیریت Server واقعی
↓
ExplainShell + ArchWiki
↓
حل مشکلات واقعی
مرحله ۱؛ هفته اول
هدف هفته اول:
از Terminal نترسید.
موضوعاتی که باید یاد بگیرید:
- pwd
- ls
- cd
- mkdir
- touch
- cp
- mv
- rm
- cat
- less
Linux Journey برای این مرحله مناسب است.
مرحله ۲؛ هفته دوم
حالا با Commandهای کاربردیتر کار کنید:
grep
find
sort
uniq
head
tail
wc
cut
awk
sed
در همین مرحله Bandit را شروع کنید.
مرحله ۳؛ هفته سوم
وارد مفاهیم مهمتر شوید:
- Users
- Groups
- Permissions
- Processes
- Signals
- Environment Variables
- Pipes
- Redirection
مرحله ۴؛ هفته چهارم
یک Linux Server واقعی بسازید.
مثلاً Ubuntu Server داخل VirtualBox.
بعد فقط از طریق SSH به آن وصل شوید:
ssh user@server-ip
از این مرحله به بعد تا حد ممکن Server را فقط با Command Line مدیریت کنید.
مرحله ۵؛ مدیریت Serviceها
یاد بگیرید با systemd کار کنید:
systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx
همچنین Logها:
journalctl
journalctl -u nginx
journalctl -f
را تمرین کنید.
مرحله ۶؛ Networking
بعد وارد Networking شوید.
Commandهایی مثل:
ip
ss
ping
curl
wget
dig
traceroute
ssh
scp
rsync
را یاد بگیرید.
مرحله ۷؛ Bash Scripting
وقتی یک Task را بیشتر از چند بار بهصورت دستی انجام دادید، زمان Automation رسیده است.
مثلاً:
#!/bin/bash
tar -czf backup.tar.gz /var/www
echo "Backup completed"
کمکم با:
- Variables
- if
- for
- while
- Functions
- Exit Codes
آشنا شوید.
مرحله ۸؛ امنیت Server
بعد از اینکه Server خودتان را ساختید، موضوع Security را جدی بگیرید.
موارد پایه:
- SSH Key Authentication
- غیرفعال کردن Loginهای غیرضروری
- Firewall
- Update منظم
- Permission صحیح
- Log Monitoring
- Backup
پروژه عملی شماره ۱؛ Web Server بسازید
یک VPS یا VM ایجاد کنید و:
- Ubuntu Server نصب کنید.
- با SSH وصل شوید.
- Nginx نصب کنید.
- یک صفحه HTML بسازید.
- Firewall را تنظیم کنید.
- Logها را بررسی کنید.
اگر بتوانید این کار را بدون Tutorial خطبهخط انجام دهید، پیشرفت خوبی کردهاید.
پروژه عملی شماره ۲؛ Backup خودکار
یک Bash Script بنویسید که:
- فایلها را Backup کند
- آنها را Compress کند
- تاریخ را داخل Filename قرار دهد
- Backupهای قدیمی را حذف کند
بعد آن را با:
cron
هر شب اجرا کنید.
پروژه عملی شماره ۳؛ Server Monitoring
Scriptی بسازید که:
- RAM Usage
- CPU Load
- Disk Usage
- Running Processes
را بررسی کند و در صورت عبور از Threshold مشخص Alert ایجاد کند.
چند دستور را باید حفظ کنیم؟
جواب:
کمتر از چیزی که فکر میکنید.
یک Linux Admin حرفهای هم تمام Optionهای Commandها را حفظ نیست.
مهمتر این است که بدانید:
- چه ابزاری برای چه کاری وجود دارد
- چطور Documentation را بخوانید
- چطور Error را جستوجو کنید
- چطور Logها را تحلیل کنید
از man استفاده کنید
مثلاً اگر Optionهای tar را فراموش کردید:
man tar
یا:
tar --help
این عادت بسیار مهمتر از حفظ کردن تمام Flagهاست.
AI را چطور برای یادگیری Linux استفاده کنیم؟
ChatGPT، Claude یا Gemini میتوانند Tutor خوبی باشند، اما بهتر است مستقیم از آنها جواب نخواهید.
مثلاً بهجای:
این مشکل را حل کن
بگویید:
مثل یک مربی Linux راهنماییام کن.
جواب مستقیم را نگو.
فقط سرنخ بعدی را بده و اجازه بده خودم مشکل را حل کنم.
به این شکل Problem Solving شما تقویت میشود.
اگر هدفت DevOps است چه چیزهایی بعد از Linux یاد بگیری؟
بعد از تسلط نسبی به Linux مسیر بعدی میتواند شامل:
- Git
- Networking
- Bash
- Docker
- CI/CD
- Nginx
- Cloud
- Terraform
- Ansible
- Kubernetes
باشد.
اما اگر Linux پایه شما ضعیف باشد، بسیاری از این ابزارها سختتر از چیزی که هستند به نظر خواهند رسید.
اگر هدفت Cybersecurity است چه؟
بعد از Bandit میتوانید مسیرهای دیگر OverTheWire را امتحان کنید و همزمان موضوعاتی مثل:
- Networking
- Processes
- Permissions
- SSH
- Logs
- Web Servers
را عمیقتر مطالعه کنید.
جدول منابع پیشنهادی
| منبع | کاربرد | سطح |
|---|---|---|
| Linux Journey | آموزش مفاهیم پایه | مبتدی |
| The Linux Command Line | یادگیری عمیق Terminal و Bash | مبتدی تا متوسط |
| OverTheWire Bandit | تمرین عملی و Problem Solving | مبتدی تا متوسط |
| Linux Upskill Challenge | مدیریت Server واقعی | متوسط |
| ExplainShell | توضیح Commandهای پیچیده | همه سطوح |
| ArchWiki | Documentation و Troubleshooting | متوسط تا پیشرفته |
لینک سریع تمام منابع
Linux Journey:
https://labex.io/linuxjourney
The Linux Command Line:
https://linuxcommand.org/tlcl.php
OverTheWire Bandit:
https://overthewire.org/wargames/bandit/
Linux Upskill Challenge:
https://linuxupskillchallenge.com/
ExplainShell:
https://explainshell.com/
ArchWiki:
https://wiki.archlinux.org/
جمعبندی
برای یادگیری Linux لازم نیست صدها دستور را حفظ کنید.
مسیر مؤثرتر این است که ابتدا با Linux Journey مفاهیم پایه را یاد بگیرید، سپس با Bandit آنها را در Challengeهای واقعی تمرین کنید و همزمان از کتاب The Linux Command Line برای عمیقتر شدن استفاده کنید.
بعد از آن با Linux Upskill Challenge یک Server واقعی راهاندازی کنید و مدیریت User، Service، Log، Network، Web Server و Security را در عمل تجربه کنید.
هر زمان با یک Command پیچیده روبهرو شدید ExplainShell میتواند به فهم آن کمک کند و برای مشکلات فنی عمیقتر ArchWiki یکی از ارزشمندترین Referenceهای دنیای Linux است.
برای یادگیری واقعی Linux، هر روز بهجای حفظ کردن ده Command جدید، یک مشکل واقعی را با Terminal حل کنید.
آموزش برنامهنویسی و سرور در معین گیفت
در معین گیفت منابع و آموزشهای کاربردی Linux، برنامهنویسی، DevOps، Cloud، Server Management و ابزارهای توسعه را معرفی میکنیم تا مسیر یادگیری مهارتهای فنی را بهصورت عملی و مرحلهبهمرحله طی کنید.