توی این درس یاد میگیری برای تمرین دستورهای لینوکس چه گزینههایی داری و کدام برای تو مناسبتر است: WSL2 روی ویندوز، یک ماشین مجازی (یا Multipass) روی مک و ویندوز، یک سرور مجازی (VPS)، و یک کانتینر برای تمرین سریع. دستورهای نصب WSL (wsl --install، wsl -l -v، wsl --set-default-version 2) را میبینی، بعد از نصب با یک اسکریپت کوچک مطمئن میشوی همهچیز درست است، و اولین ترمینال را باز میکنی و میخوانی.
مسئله: برای یاد گرفتن لینوکس، باید لینوکس داشته باشی
Section titled “مسئله: برای یاد گرفتن لینوکس، باید لینوکس داشته باشی”دستورهای لینوکس را با خواندن یاد نمیگیری؛ باید تایپ کنی، خطا بگیری و درستش کنی. پس اول یک لینوکس واقعی لازم داری که بتوانی روی آن بیترس آزمایش کنی (اگر چیزی خراب شد، دوباره بسازی). خبر خوب: لازم نیست کامپیوترت را پاک کنی یا لینوکس را بهجای سیستمعاملت نصب کنی. چند راه امنتر هست.
تشبیه: زمین تمرین، نه میدان مسابقه
Section titled “تشبیه: زمین تمرین، نه میدان مسابقه”فوتبال را در زمین تمرین یاد میگیری، نه وسط فینال. محیط تمرین لینوکس هم زمین تمرین است: جایی که اشتباه کردن مجاز است. برخی زمینها شبیه سالن سرپوشیدهاند (WSL، سریع و راحت)، بعضی شبیه زمین واقعیاند (VPS، با همهی خطرهای سرور واقعی).
چهار راه
Section titled “چهار راه”| گزینه | سیستم | مزیت | عیب |
|---|---|---|---|
| WSL2 | ویندوز | سریع، سبک، یکپارچه با ویندوز، رایگان | فقط ویندوز؛ شبکه و systemd کمی فرق دارند |
| Multipass | مک، ویندوز، لینوکس | یک دستور = یک Ubuntu؛ مناسب سرور | یک ابزار اضافه (مبتنی بر ماشین مجازی) |
| ماشین مجازی (UTM، VirtualBox، VMware، Parallels) | مک، ویندوز | محیط کامل و گرافیکی؛ کاملاً ایزوله | نصب دستی و کندتر؛ حافظهی بیشتر |
| VPS | هر سیستمی (فقط ssh لازم است) | شبیه سرور واقعی با IP عمومی | هزینه، به اینترنت وابسته، خطر حمله |
| کانتینر (داکر) | هر سیستمی که داکر دارد | چند ثانیه؛ هر زمان پاک و دوباره بساز | systemd ندارد؛ برای کار با سرویسها محدودیت دارد |
مثالهای عملی
Section titled “مثالهای عملی”مثال ۱: ویندوز با WSL2 (نمونه)
Section titled “مثال ۱: ویندوز با WSL2 (نمونه)”اگر ویندوز داری، سادهترین راه WSL2 است. در PowerShell که با دسترسی Administrator باز کردی:
wsl --installاین دستور (طبق مستندات مایکروسافت) هر چیزی که WSL لازم دارد را فعال میکند و Ubuntu را نصب میکند. بعد از ریاستارت، پنجرهی Ubuntu باز میشود و یک username و password (مخصوص لینوکس) میخواهد. جزئیات کامل را (بههمراه فایلها و چند اشتباه رایج) در درس WSL2 برای داکر داری؛ اینجا فقط آنچه برای تمرین لینوکس لازم است.
مثال ۲: بررسی نسخهی WSL (نمونه)
Section titled “مثال ۲: بررسی نسخهی WSL (نمونه)”wsl -l -v NAME STATE VERSION* Ubuntu Running 2سه ستون: NAME اسم توزیع، STATE (Running یا Stopped) و VERSION نسخهی WSL. علامت * یعنی توزیع پیشفرض. تو نسخهی ۲ میخواهی. اگر ۱ بود یا میخواهی همهی توزیعهای بعدی ۲ باشند:
wsl --set-default-version 2The operation completed successfully.برای تبدیل یک توزیع موجود از ۱ به ۲: wsl --set-version Ubuntu 2. از این به بعد برای باز کردن لینوکس کافی است wsl را در PowerShell بزنی یا Ubuntu را از منوی Start باز کنی.
مثال ۳: مک، با Multipass (نمونه)
Section titled “مثال ۳: مک، با Multipass (نمونه)”Multipass (از شرکت Canonical، سازندهی Ubuntu) با یک دستور یک Ubuntu تازه میسازد. نصب (با Homebrew) و ساخت:
brew install --cask multipassmultipass launch 24.04 --name lab --cpus 2 --memory 2G --disk 10Gmultipass shell labدستور آخر تو را وارد ترمینال Ubuntu میکند. برای مدیریت: multipass list (فهرست ماشینها)، multipass stop lab، و برای پاک کردن کامل multipass delete --purge lab. هر وقت لازم شد، ماشین را حذف و دوباره میسازی. جایگزین گرافیکی: UTM (مک) یا VirtualBox/VMware (ویندوز) با دانلود ISO اوبونتو و نصب مرحلهبهمرحله. روی مکهای Apple Silicon باید تصویر ARM64 (aarch64) را بگیری، نه x86.
مثال ۴: سریعترین راه، یک کانتینر (اجرای واقعی)
Section titled “مثال ۴: سریعترین راه، یک کانتینر (اجرای واقعی)”اگر داکر داری (در دورهی داکر نصبش را یاد میگیری)، یک Ubuntu تمیز در چند ثانیه:
docker run --rm ubuntu:24.04 bash -c '. /etc/os-release; echo "توزیع: $PRETTY_NAME"; echo "کاربر: $(whoami)"; echo "نام ماشین: $(hostname)"; echo "پوشهی فعلی: $(pwd)"'توزیع: Ubuntu 24.04.5 LTSکاربر: rootنام ماشین: d6e7adce2510پوشهی فعلی: /با --rm کانتینر بعد از خروج پاک میشود، یعنی هر بار یک سیستم تازه. در ترمینال معمولی خودت docker run -it --rm ubuntu:24.04 bash را میزنی تا یک شل تعاملی بگیری (-it یعنی تعاملی با ترمینال)؛ با exit خارج میشوی. محدودیتش این است که systemd ندارد، پس درسهای سرویسها و فایروال را در یک ماشین مجازی یا VPS هم تمرین کن.
دستور wsl --install را کجا میزنی؟
wsl دستور ویندوز است؛ داخل لینوکس وجود ندارد.
مثال ۵: سرور مجازی و اولین ورود (نمونه)
Section titled “مثال ۵: سرور مجازی و اولین ورود (نمونه)”با اجارهی یک VPS، ارائهدهنده یک آدرس IP و یک رمز یا کلید برای ورود به تو میدهد. ورود با ssh (درسهای بعدی) از ترمینال خودت:
ssh root@203.0.113.10اگر VPS میخری، ارائهدهندهای انتخاب کن که هم به آن دسترسی داری و هم پرداخت برایت ممکن است، و در همان روز اول بخشهای فایروال و SSH را (در همین دوره) انجام بده: سرورهای تازه با IP عمومی ظرف چند دقیقه شروع به دریافت تلاشهای ورود خودکار میکنند. برای یاد گرفتن، یک VPS ارزان با کمترین مشخصات کافی است.
مثال ۶: بعد از نصب، مطمئن شو درست است (اجرای واقعی)
Section titled “مثال ۶: بعد از نصب، مطمئن شو درست است (اجرای واقعی)”با هر روشی که لینوکس را آوردی، این اسکریپت کوچک را داخل آن اجرا کن تا مطمئن شوی محیط برای دوره آماده است. هر خط یک بررسی است:
check() { if eval "$2" >/dev/null 2>&1; then echo "✔ $1"; else echo "✘ $1"; fi; }check "توزیع Ubuntu یا Debian است" '. /etc/os-release && echo "$ID $ID_LIKE" | grep -qE "ubuntu|debian"'check "bash در دسترس است" 'command -v bash'check "man و دستورهای پایه هست" 'command -v man ls cp grep find'check "sudo دارم" 'sudo -n true'check "مدیر بسته apt تنظیم است" 'apt-cache policy bash | grep -q Candidate'check "پوشهی خانه قابلنوشتن است" 'touch ~/.lx-test && rm ~/.lx-test'echo "--- اطلاعات:"echo "کاربر: $(whoami) | خانه: $HOME | شل: $SHELL"echo "فضای خالی دیسک: $(df -h / | awk 'NR==2{print $4}')"✔ توزیع Ubuntu یا Debian است✔ bash در دسترس است✔ man و دستورهای پایه هست✔ sudo دارم✔ مدیر بسته apt تنظیم است✔ پوشهی خانه قابلنوشتن است--- اطلاعات:کاربر: ali | خانه: /home/ali | شل: /bin/bashفضای خالی دیسک: 408Gعلامت ✔ یعنی آمادهای. اگر ✘ دیدی (مثلاً sudo)، همان مورد را قبل از ادامه حل کن. این اسکریپت از دستورهایی استفاده میکند که در درسهای بعد یاد میگیری (command -v، df، awk)؛ فعلاً فقط اجرایش کن.
مثال ۷: اولین ترمینال را بخوان
Section titled “مثال ۷: اولین ترمینال را بخوان”وقتی ترمینال باز میشود، چیزی شبیه این میبینی:
ali@pc:~$هر بخش یک معنی دارد: ali نام کاربر، @، pc نام ماشین، ~ پوشهی فعلی (علامت ~ یعنی پوشهی خانهی تو) و $ یعنی «آمادهام، دستور بنویس» (کاربر عادی؛ برای root علامت # است). همین سه چیز را با دستور میپرسیم:
echo "کاربر: $(whoami)"echo "ماشین: $(hostname)"echo "پوشهی فعلی: $(pwd)"echo "پوشهی خانه: $HOME"کاربر: aliماشین: pcپوشهی فعلی: /home/aliپوشهی خانه: /home/aliپشت پرده: WSL و ماشین مجازی چه فرقی دارند؟
Section titled “پشت پرده: WSL و ماشین مجازی چه فرقی دارند؟”یک ماشین مجازی یک کامپیوتر نرمافزاری کامل با هستهی خودش است که روی سختافزار تو میچرخد (برنامهی «مجازیساز» آن را اجرا میکند). WSL2 هم از همین ایده استفاده میکند، ولی یک ماشین مجازی خیلی سبک با هستهی لینوکس واقعی است که مایکروسافت آن را برایت مدیریت میکند و به ویندوز وصل است. کانتینر سبکتر هم هست و هسته را با میزبان مشترک میگیرد (دیدی در درس قبل که هستهی چهار توزیع یکی بود).
برای یادگیری دستورها، هر سه رفتار مشابه دارند. برای یادگیری خدمات سیستمی (systemd)، فایروال و راهاندازی سرور، به یک ماشین مجازی کامل یا VPS نیاز داری. در این دوره دستورهایی که به systemd نیاز دارند (سرویسها، cron، فایروال) را روی یک Ubuntu با systemd واقعی آزمایش کردهام تا خروجیها دقیقاً مثل چیزی باشد که روی سرور میبینی.
جدولهای مرجع
Section titled “جدولهای مرجع”| دستور | کجا | کار |
|---|---|---|
wsl --install |
PowerShell (Administrator) | نصب WSL و Ubuntu |
wsl -l -v |
PowerShell | فهرست توزیعها با وضعیت و نسخه |
wsl --set-default-version 2 |
PowerShell | نسخهی ۲ را پیشفرض کن |
wsl --shutdown |
PowerShell | خاموش کردن همهی توزیعها |
multipass launch 24.04 --name lab |
ترمینال مک/ویندوز | ساخت Ubuntu جدید |
multipass shell lab |
ترمینال | ورود به ماشین |
multipass delete --purge lab |
ترمینال | حذف کامل ماشین |
docker run -it --rm ubuntu:24.04 bash |
ترمینال | شل Ubuntu یکبارمصرف |
ssh user@IP |
ترمینال | ورود به VPS |
اشتباهات رایج
Section titled “اشتباهات رایج”۱) نصب لینوکس بهجای ویندوز/مک
Section titled “۱) نصب لینوکس بهجای ویندوز/مک”برای شروع لازم نیست سیستمعاملت را عوض کنی؛ این کار خطر از دست رفتن داده دارد. راهحل: WSL2، ماشین مجازی یا کانتینر.
۲) انتخاب توزیع عجیب برای شروع
Section titled “۲) انتخاب توزیع عجیب برای شروع”مقالهها و این دوره روی Ubuntu (یا Debian) نوشته شدهاند. راهحل: Ubuntu 24.04 LTS را بگیر تا دستورها دقیقاً یکی باشند.
۳) نوشتن دستور ویندوز در ترمینال لینوکس
Section titled “۳) نوشتن دستور ویندوز در ترمینال لینوکس”wsl --installbash: wsl: command not foundدستور wsl مال PowerShell ویندوز است و در لینوکس وجود ندارد (command not found). راهحل: بدان هر دستور را کجا باید بزنی (ستون «کجا» در جدول بالا).
۴) وارد نکردن یا فراموش کردن رمز
Section titled “۴) وارد نکردن یا فراموش کردن رمز”موقع تایپ رمز در ترمینال لینوکس هیچ چیز (حتی ستاره) نشان داده نمیشود و این عادی است. راهحل: رمز را بنویس و Enter بزن؛ رمز را جایی امن نگه دار.
۵) تمرین روی سرور واقعی (production) خودت
Section titled “۵) تمرین روی سرور واقعی (production) خودت”rm --no-such-flag 2>&1 | head -2rm: unrecognized option '--no-such-flag'Try 'rm --help' for more information.گاهی یک دستور اشتباه یا flag اشتباه خطا میدهد؛ ولی اگر روی سرور مهم تمرین کنی، یک rm -rf اشتباه خسارت واقعی دارد. راهحل: اول در محیط تمرین، بعد روی سرور.
بگو در سیستم تو (ویندوز یا مک یا لینوکس) کدام گزینهی این درس مناسبتر است و دلیلش را در یک جمله بنویس. اگر داکر داری، یک Ubuntu یکبارمصرف بالا بیاور و نام توزیعش را چاپ کن.
دیدن جواب
پاسخ نمونه: «ویندوز دارم، پس WSL2، چون رایگان و سبک است و لینوکس واقعی میدهد.» و اگر داکر داری:
docker run --rm ubuntu:24.04 sh -c '. /etc/os-release; echo $PRETTY_NAME'Ubuntu 24.04.5 LTSتمرین اصلی: Ubuntu را نصب کن و اولین ترمینال را باز کن. بعد با اسکریپتی که در مثال ۶ دیدی مطمئن شو محیطت آماده است و سه چیز را چاپ کن: نام کاربر، نام ماشین و پوشهی فعلی.
دیدن جواب
echo "کاربر: $(whoami) | ماشین: $(hostname) | پوشهی فعلی: $(pwd)"کاربر: ali | ماشین: pc | پوشهی فعلی: /home/aliاگر همهی بررسیهای مثال ۶ ✔ شد، آمادهای.
بنویس یک اسکریپت env-report.sh که گزارشی از محیط بدهد: توزیع، هسته، معماری، تعداد CPU، حافظهی کل و فضای خالی دیسک، و اگر sudo در دسترس نیست هشدار بدهد. آن را ذخیره، اجرایی و اجرا کن.
دیدن جواب
cat > env-report.sh <<'LXEOF'#!/bin/bash. /etc/os-releaseecho "توزیع: $PRETTY_NAME"echo "هسته: $(uname -r) ($(uname -m))"echo "CPU: $(nproc) هسته"echo "حافظه: $(grep MemTotal /proc/meminfo | awk '{printf "%.1f GB", $2/1024/1024}')"echo "دیسک: $(df -h / | awk 'NR==2{print $4}') آزاد"sudo -n true 2>/dev/null && echo "sudo: در دسترس" || echo "هشدار: sudo در دسترس نیست"LXEOFchmod +x env-report.sh./env-report.shتوزیع: Ubuntu 24.04.5 LTSهسته: 7.0.14-linuxkit (aarch64)CPU: 8 هستهحافظه: 3.8 GBدیسک: 408G آزادsudo: در دسترسآزمونک
Section titled “آزمونک”سادهترین راه برای داشتن لینوکس واقعی روی ویندوز؟
رایگان، سبک و بدون خطر برای دادهها.
خروجی wsl -l -v ستون VERSION چه میگوید؟
ما نسخهی ۲ را میخواهیم.
کدام گزینه برای تمرین فایروال و systemd بهتر است؟
کانتینر معمولاً systemd ندارد.
در پرامپت ali@pc:~$ علامت ~ یعنی…
و $ یعنی کاربر عادی؛ # یعنی root.
چرا نباید در شروع لینوکس را جای سیستمعاملت نصب کنی؟
WSL، ماشین مجازی یا کانتینر کافی است.
هنگام تایپ رمز در ترمینال لینوکس چه میبینی؟
عادی است؛ فقط بنویس و Enter بزن.
جمعبندی
Section titled “جمعبندی”- برای تمرین به یک لینوکس واقعی نیاز داری؛ نه پاک کردن سیستمعاملت.
- ویندوز: WSL2 (
wsl --install،wsl -l -v،wsl --set-default-version 2). مک/ویندوز: Multipass یا ماشین مجازی. هر جا: کانتینر. برای شبیهسازی سرور واقعی: VPS. - Ubuntu 24.04 LTS را انتخاب کن تا دستورها با دوره یکی باشند.
- بعد از نصب، با یک اسکریپت ساده (مثال ۶) درستی محیط را بسنج.
- پرامپت
ali@pc:~$یعنی کاربر، ماشین، پوشهی فعلی و علامت کاربر عادی. - دستورهای ویندوز (
wsl ...) فقط در PowerShellاند، نه در لینوکس.
| دستور | کاری که میکند |
|---|---|
wsl --install | نصب WSL و Ubuntu (PowerShell ادمین) — نمونه |
wsl -l -v | فهرست توزیعها و نسخهی WSL — نمونه |
wsl --set-default-version 2 | نسخهی ۲ پیشفرض — نمونه |
multipass launch 24.04 --name lab | ساخت Ubuntu با Multipass — نمونه |
docker run -it --rm ubuntu:24.04 bash | یک Ubuntu یکبارمصرف |
whoami | نام کاربر فعلی |
hostname | نام ماشین |
pwd | پوشهی فعلی |
echo $HOME | پوشهی خانه |