رفتن به محتوا
مبانی کامپیوتر و اینترنتکامپیوتر از دروندرس ۱ از ۱۶

چطور با LoopX یاد بگیری

قبل از درس اول: ساختار هر درس، فرق بلوک دستور و بلوک خروجی، برچسب «نمونه»، وقتی خروجی تو فرق دارد، خواندن پیام‌های خطای انگلیسی (No such file، Permission denied، command not found و...)، و چطور درست سؤال بپرسی و جواب پیدا کنی.

  • حدود ۱۵ دقیقه مطالعه
  • ۷ مثال اجراشده
  • ۳ تمرین با جواب
  • مقدماتی (از صفر مطلق)
  • به‌روزرسانی: ۲۹ مهر ۱۴۰۵

توی این درس یاد می‌گیری درس‌های LoopX چطور ساخته شده‌اند و از هر بخششان چطور استفاده کنی: بلوک دستور را از بلوک خروجی تشخیص بدهی، بدانی برچسب «نمونه» یعنی چه، وقتی خروجی سیستم تو با درس فرق دارد نترسی، و مهم‌تر از همه پیام خطا را بخوانی به‌جای اینکه از آن بترسی. در آخر یاد می‌گیری وقتی گیر کردی چطور جواب پیدا کنی و چطور سؤال بپرسی که زود جواب بگیری. این درس هیچ دستوری ندارد که لازم باشد اجرا کنی.

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

Section titled “مسئله: یاد گرفتن ابزارهای فنی با خواندن تنها جواب نمی‌دهد”

خیلی‌ها آموزش را مثل رمان می‌خوانند: درس را تا آخر می‌خوانند، سر تکان می‌دهند و می‌روند درس بعد. یک هفته بعد هیچ چیز یادشان نیست. ابزارهایی مثل لینوکس، Git و داکر مثل رانندگی هستند: کتاب آیین‌نامه لازم است، ولی رانندگی را پشت فرمان یاد می‌گیری.

این دوره‌ها کلاس شنا هستند، نه کتاب شنا. مربی (درس) حرکت را نشان می‌دهد و توضیح می‌دهد چرا این‌طور است، ولی تا خودت در آب نروی (دستور را تایپ نکنی) و چند بار آب نخوری (خطا نگیری)، شنا یاد نمی‌گیری. خبر خوب: در این استخر (محیط تمرین) غرق نمی‌شوی؛ هر چه خراب شد، دوباره می‌سازی.

همه‌ی درس‌ها یک ترتیب ثابت دارند تا بدانی هر چیز کجاست:

هر درس از «چرا» شروع می‌شود، با مثال‌های اجراشده جلو می‌رود و با تمرین و آزمونک تمام می‌شود.
بخش کارش تو چه کنی
توی این درس یاد می‌گیری خلاصه‌ی درس در یک پاراگراف بخوان تا بدانی به کجا می‌رسی
مسئله و سناریو مشکلی واقعی که این درس حلش می‌کند تصور کن خودت در آن موقعیتی
تشبیه یک مثال از زندگی روزمره اگر مفهوم سخت بود، به تشبیه برگرد
مثال‌های عملی دستورها با خروجی واقعی همه را خودت تایپ و اجرا کن
پشت پرده اینکه دقیقاً چه اتفاقی می‌افتد بار اول اگر سنگین بود، رد شو و بعداً برگرد
جدول‌های مرجع خلاصه‌ی دستورها و گزینه‌ها بعداً برای مرور
اشتباهات رایج خطاهایی که تقریباً همه می‌کنند خطای خودت را اینجا پیدا کن
تمرین (آسان، متوسط، سخت) کار عملی با جواب پنهان اول خودت حل کن، بعد جواب را باز کن
آزمونک چند سؤال چندگزینه‌ای نتیجه در صفحه‌ی «پیشرفت من» ذخیره می‌شود
جمع‌بندی و برگه‌ی تقلب نکته‌های اصلی در چند خط قبل از درس بعد یک بار بخوان

مثال ۱: بلوک دستور در برابر بلوک خروجی

Section titled “مثال ۱: بلوک دستور در برابر بلوک خروجی”

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

Terminal window
whoami

دومی، که بالایش نوشته «خروجی»، چیزی است که کامپیوتر در جواب چاپ می‌کند. این را تایپ نمی‌کنی:

خروجی
ali

یک جعبه‌ی سوم هم در بعضی درس‌ها هست، با عنوان «دستورها و کلیدها»: وقتی باید علاوه بر تایپ دستور، کلیدی مثل Ctrl+C یا Enter را بزنی یا به سؤالی جواب بدهی. هر خط آن یک کار است، به همان ترتیب.

مثال ۲: خط‌های «برچسب» در دستورها

Section titled “مثال ۲: خط‌های «برچسب» در دستورها”

گاهی داخل یک بلوک دستور خط‌هایی مثل این می‌بینی:

Terminal window
echo "--- نام کاربر:"
whoami
خروجی
--- نام کاربر:
ali

خط echo "--- ..." فقط یک برچسب چاپ می‌کند تا در خروجی بدانی هر قسمت مال کدام دستور است. زدنش اختیاری است. همچنین هر چیزی که بعد از علامت # در یک خط بیاید توضیح است و اجرا نمی‌شود.

مثال ۳: وقتی خروجی تو فرق دارد

Section titled “مثال ۳: وقتی خروجی تو فرق دارد”

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

در درس می‌بینی روی سیستم تو چرا
ali و pc اسم کاربر و ماشین خودت هر کس اسم خودش را گذاشته
Oct 3 21:07 تاریخ و ساعت امروز خروجی در زمان دیگری گرفته شده
PID 4821 یا 172.17.0.2 عددهای دیگر شماره‌ی پروسه و آدرس IP هر بار و هر جا فرق می‌کند
aarch64 یا arm64 احتمالاً x86_64 یا amd64 نوع پردازنده‌ی تو (درس «کامپیوتر چیست»)
نسخه‌ی 5.2.21 کمی جدیدتر یا قدیمی‌تر نسخه‌ی برنامه‌ها با زمان عوض می‌شود

چیزی که باید یکی باشد، شکل خروجی و پیام‌هاست: اگر درس می‌گوید Permission denied و تو Permission denied می‌بینی، درست پیش رفته‌ای، حتی اگر اسم فایل و ساعت فرق کند.

بعضی دستورها را نمی‌شود روی سیستم آزمایشی اجرا کرد: مثلاً نصب WSL (فقط روی ویندوز) یا گرفتن گواهی HTTPS برای یک دامنه‌ی واقعی. این‌ها با مستندات رسمی تطبیق داده شده‌اند و برچسب «نمونه» دارند:

نمونه (اجرا نشده)
wsl --install

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

مثال ۵: پیام خطا را بخوان

Section titled “مثال ۵: پیام خطا را بخوان”

پیام خطا دشمن نیست؛ راهنماست. تقریباً همیشه سه چیز می‌گوید: چه برنامه‌ای شکایت دارد، از چه چیزی، و چرا:

خروجی
cat: notes.txt: No such file or directory
  • cat: برنامه‌ای که خطا داد.
  • notes.txt: چیزی که مشکل دارد.
  • No such file or directory: علت؛ «چنین فایل یا پوشه‌ای نیست».

پس جواب این است: یا اسم فایل غلط است، یا در پوشه‌ی اشتباهی هستی. این پیام‌ها را زیاد می‌بینی؛ معنی‌شان را یک بار یاد بگیر:

پیام معنی اولین چیزی که بررسی کنی
No such file or directory فایل یا پوشه پیدا نشد اسم را درست نوشتی؟ در پوشه‌ی درستی هستی؟
Permission denied اجازه نداری فایل مال کیست؟ sudo لازم است؟
command not found چنین دستوری نیست غلط تایپی؟ برنامه نصب است؟
syntax error دستور درست نوشته نشده علامت‌ها، کوتیشن‌ها و فاصله‌ها
Is a directory پوشه است، فایل نیست برنامه فایل می‌خواست
File exists از قبل وجود دارد اسم دیگری بده یا اول قبلی را بردار
Connection refused به ماشین رسیدی ولی کسی روی آن پورت گوش نمی‌دهد برنامه روشن است؟ پورت درست است؟
Connection timed out اصلاً جوابی نیامد آدرس درست است؟ فایروال؟ اینترنت؟
Name or service not known این اسم را به آدرس IP تبدیل نتوانست اسم را درست نوشتی؟ DNS کار می‌کند؟
⚡ بررسی سریع

پیام «mkdir: cannot create directory ‘/etc/test’: Permission denied» یعنی چه؟

ترتیب پیشنهادی، از سریع به کند:

  1. پیام خطا را دوباره و آرام بخوان. نصف مشکل‌ها همین‌جا حل می‌شوند.
  2. دستورت را با دستور درس مقایسه کن، حرف‌به‌حرف: فاصله‌ها، علامت‌ها، حروف بزرگ و کوچک.
  3. بخش «اشتباهات رایج» همان درس را ببین؛ احتمالاً خطای تو آنجاست.
  4. پیام خطا را جستجو کن. فقط قسمت ثابت را، داخل کوتیشن، مثلاً "Permission denied (publickey)"، نه اسم فایل‌های خودت. مستندات خود برنامه (man و --help در دوره‌ی لینوکس) هم منبع اصلی است.
  5. سؤال بپرس، به شکل درست (پایین).

سؤال بد: «دستور کار نمی‌کند. کمک!». کسی نمی‌تواند جواب بدهد. سؤال خوب چهار چیز دارد:

یک سؤال خوب
۱) چه می‌خواستم: می‌خواستم با ssh به سرورم وصل شوم.
۲) چه زدم: ssh deploy@203.0.113.10
۳) چه دیدم: deploy@203.0.113.10: Permission denied (publickey).
۴) چه امتحان کردم: کلید را با ssh-copy-id اضافه کرده بودم؛ ls -l ~/.ssh را هم زدم و فایل‌ها هست.
محیط: Ubuntu 24.04 روی Multipass

با این چهار خط، هر کس که بلد باشد در یک دقیقه جوابت را می‌دهد. خروجی را به شکل متن بفرست، نه عکس از صفحه (متن را می‌شود کپی و جستجو کرد). و هرگز رمز، کلید خصوصی یا توکن را در سؤالت نگذار.

پشت پرده: چرا ترتیب دوره‌ها مهم است؟

Section titled “پشت پرده: چرا ترتیب دوره‌ها مهم است؟”

دوره‌ها روی هم سوارند: مبانی (کامپیوتر، داده، شبکه) پایه‌ی لینوکس است؛ لینوکس پایه‌ی Bash و Git؛ و همه‌ی این‌ها پایه‌ی داکر و Nginx. هر درس فقط از چیزهایی استفاده می‌کند که قبلاً دیده‌ای، و هر جا مجبور شده از چیزی جلوتر استفاده کند، صریحاً می‌گوید «این را در درس بعد کامل یاد می‌گیری؛ فعلاً همین‌قدر بدان». پس اگر وسط یک درس به چیزی ناآشنا رسیدی که چنین توضیحی ندارد، احتمالاً یک درس قبلی را جا انداخته‌ای. صفحه‌ی مسیر یادگیری ترتیب کامل را نشان می‌دهد و صفحه‌ی پیشرفت من درس‌هایی را که تمام کرده‌ای.

کلمه‌ی انگلیسی پرتکرار معنی
file / directory فایل / پوشه
denied / not permitted رد شد / مجاز نیست
not found / no such پیدا نشد / چنین چیزی نیست
invalid / unrecognized نامعتبر / ناشناخته
failed / error / warning شکست / خطا / هشدار (هشدار یعنی کار انجام شد ولی نکته‌ای هست)
expected انتظار می‌رفت (معمولاً بعدش می‌گوید چه چیزی)
already exists / in use از قبل هست / در حال استفاده است
refused / timed out رد شد / وقتش تمام شد

۱) فقط خواندن، بدون اجرا

Section titled “۱) فقط خواندن، بدون اجرا”

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

۲) باز کردن جواب تمرین قبل از تلاش

Section titled “۲) باز کردن جواب تمرین قبل از تلاش”

جواب را خواندن حسِ «فهمیدم» می‌دهد، ولی ذهنت تلاشی نکرده است. راه‌حل: دست‌کم ده دقیقه خودت تلاش کن؛ اگر نشد، جواب را بخوان و بعد بدون نگاه کردن دوباره بنویس.

۳) ترسیدن از خطا و رد شدن از کنارش

Section titled “۳) ترسیدن از خطا و رد شدن از کنارش”

راه‌حل: هر خطا را مثل مثال ۵ تکه‌تکه بخوان. بعد از چند هفته بیشترشان را از دور می‌شناسی.

۴) نادیده گرفتن هشدارها (warning)

Section titled “۴) نادیده گرفتن هشدارها (warning)”

هشدار یعنی کار انجام شد، ولی چیزی هست که باید بدانی. راه‌حل: هشدار را هم بخوان؛ خیلی از خرابی‌های بعدی از هشدارهای امروز می‌آیند.

۵) پریدن به دوره‌های جلوتر

Section titled “۵) پریدن به دوره‌های جلوتر”

داکر بدون لینوکس مثل رانندگی در اتوبان قبل از یاد گرفتن ترمز است. راه‌حل: ترتیب «مسیر یادگیری» را رعایت کن؛ اگر چیزی را بلدی، آزمون آخر آن بخش را بده و اگر قبول شدی برو جلو.

تمرینآسان

این پیام خطا را تکه‌تکه کن: کدام برنامه، روی چه چیزی، و چرا؟

rm: cannot remove 'backup': Is a directory
دیدن جواب
  • برنامه: rm (حذف فایل).
  • روی چه چیزی: backup.
  • چرا: Is a directory، یعنی backup یک پوشه است و rm به‌تنهایی فایل پاک می‌کند، نه پوشه. (راهش را در دوره‌ی لینوکس می‌بینی.)
تمرینمتوسط

تمرین اصلی: فرض کن دستور cp report.txt /var/www/ خطای cp: cannot create regular file '/var/www/report.txt': Permission denied داده. یک سؤال خوب، با همان چهار بخش مثال ۷، برای یک انجمن بنویس.

دیدن جواب
۱) چه می‌خواستم: فایل report.txt را در پوشه‌ی سایت (/var/www) بگذارم.
۲) چه زدم: cp report.txt /var/www/
۳) چه دیدم: cp: cannot create regular file '/var/www/report.txt': Permission denied
۴) چه امتحان کردم: فایل report.txt در پوشه‌ی فعلی هست (ls آن را نشان می‌دهد). با کاربر عادی ali کار می‌کنم.
محیط: Ubuntu 24.04

(و جواب احتمالی که می‌گیری: /var/www مال کاربر root است؛ یا با sudo cp کپی کن یا دسترسی پوشه را درست کن. هر دو را در دوره‌ی لینوکس یاد می‌گیری.)

تمرینسخت

برای هر یک از این سه خطا بگو اولین چیزی که بررسی می‌کنی چیست:

۱) bash: nmap: command not found
۲) curl: (7) Failed to connect to localhost port 8080: Connection refused
۳) ssh: connect to host 10.0.0.9 port 22: Connection timed out
دیدن جواب

۱) command not found: یا اسم را غلط نوشته‌ام، یا nmap نصب نیست. اول املای دستور، بعد نصب بودنش.

۲) Connection refused: به ماشین رسیدم ولی کسی روی پورت ۸۰۸۰ گوش نمی‌دهد. اول بررسی می‌کنم برنامه‌ای که باید روی ۸۰۸۰ باشد روشن است یا نه.

۳) Connection timed out: اصلاً جوابی نیامد. اول آدرس IP را بررسی می‌کنم، بعد اینکه ماشین روشن و در شبکه است، و بعد فایروال (که بسته را بی‌صدا دور ریخته).

فرق ۲ و ۳ مهم است: «refused» یعنی ماشین جواب داد و گفت نه؛ «timed out» یعنی هیچ جوابی نیامد.

آزمونک
  1. جعبه‌ای که بالایش نوشته «خروجی» را چه کنی؟

  2. خروجی تو تاریخ و شماره‌های دیگری دارد. یعنی…

  3. برچسب «نمونه» یعنی…

  4. «Permission denied» یعنی…

  5. کدام سؤال بهتر است؟

  • این دوره‌ها کلاس عملی‌اند: همه‌ی مثال‌ها را خودت تایپ و اجرا کن.
  • بلوک دستور را تایپ می‌کنی؛ بلوک خروجی جواب کامپیوتر است؛ «دستورها و کلیدها» یعنی ترتیب تایپ و کلیدها.
  • اسم، تاریخ، PID، IP و نسخه روی سیستم تو فرق دارد؛ شکل خروجی و پیام‌ها باید یکی باشد.
  • «نمونه» یعنی اجرا نشده ولی با مستندات تطبیق داده شده.
  • پیام خطا را تکه‌تکه بخوان: کدام برنامه، روی چه چیزی، چرا.
  • گیر کردی: پیام را دوباره بخوان، با درس مقایسه کن، «اشتباهات رایج»، جستجو، و در آخر سؤال چهاربخشی.
برگه‌ی تقلب این درس
دستورکاری که می‌کند
No such file or directoryپیدا نشد: اسم و پوشه را بررسی کن
Permission deniedاجازه نداری: صاحب فایل؟ sudo؟
command not foundغلط تایپی یا نصب نیست
syntax errorعلامت‌ها و فاصله‌ها
Connection refusedکسی روی پورت گوش نمی‌دهد
Connection timed outجوابی نیامد: آدرس، شبکه، فایروال
سؤال خوبهدف + دستور + خروجی متنی + آزمایش‌ها