چطور با LoopX یاد بگیری
قبل از درس اول: ساختار هر درس، فرق بلوک دستور و بلوک خروجی، برچسب «نمونه»، وقتی خروجی تو فرق دارد، خواندن پیامهای خطای انگلیسی (No such file، Permission denied، command not found و...)، و چطور درست سؤال بپرسی و جواب پیدا کنی.
- حدود ۱۵ دقیقه مطالعه
- ۷ مثال اجراشده
- ۳ تمرین با جواب
- مقدماتی (از صفر مطلق)
- بهروزرسانی: ۲۹ مهر ۱۴۰۵
توی این درس یاد میگیری درسهای LoopX چطور ساخته شدهاند و از هر بخششان چطور استفاده کنی: بلوک دستور را از بلوک خروجی تشخیص بدهی، بدانی برچسب «نمونه» یعنی چه، وقتی خروجی سیستم تو با درس فرق دارد نترسی، و مهمتر از همه پیام خطا را بخوانی بهجای اینکه از آن بترسی. در آخر یاد میگیری وقتی گیر کردی چطور جواب پیدا کنی و چطور سؤال بپرسی که زود جواب بگیری. این درس هیچ دستوری ندارد که لازم باشد اجرا کنی.
مسئله: یاد گرفتن ابزارهای فنی با خواندن تنها جواب نمیدهد
Section titled “مسئله: یاد گرفتن ابزارهای فنی با خواندن تنها جواب نمیدهد”خیلیها آموزش را مثل رمان میخوانند: درس را تا آخر میخوانند، سر تکان میدهند و میروند درس بعد. یک هفته بعد هیچ چیز یادشان نیست. ابزارهایی مثل لینوکس، Git و داکر مثل رانندگی هستند: کتاب آییننامه لازم است، ولی رانندگی را پشت فرمان یاد میگیری.
تشبیه: کلاس شنا
Section titled “تشبیه: کلاس شنا”این دورهها کلاس شنا هستند، نه کتاب شنا. مربی (درس) حرکت را نشان میدهد و توضیح میدهد چرا اینطور است، ولی تا خودت در آب نروی (دستور را تایپ نکنی) و چند بار آب نخوری (خطا نگیری)، شنا یاد نمیگیری. خبر خوب: در این استخر (محیط تمرین) غرق نمیشوی؛ هر چه خراب شد، دوباره میسازی.
ساختار هر درس
Section titled “ساختار هر درس”همهی درسها یک ترتیب ثابت دارند تا بدانی هر چیز کجاست:
| بخش | کارش | تو چه کنی |
|---|---|---|
| توی این درس یاد میگیری | خلاصهی درس در یک پاراگراف | بخوان تا بدانی به کجا میرسی |
| مسئله و سناریو | مشکلی واقعی که این درس حلش میکند | تصور کن خودت در آن موقعیتی |
| تشبیه | یک مثال از زندگی روزمره | اگر مفهوم سخت بود، به تشبیه برگرد |
| مثالهای عملی | دستورها با خروجی واقعی | همه را خودت تایپ و اجرا کن |
| پشت پرده | اینکه دقیقاً چه اتفاقی میافتد | بار اول اگر سنگین بود، رد شو و بعداً برگرد |
| جدولهای مرجع | خلاصهی دستورها و گزینهها | بعداً برای مرور |
| اشتباهات رایج | خطاهایی که تقریباً همه میکنند | خطای خودت را اینجا پیدا کن |
| تمرین (آسان، متوسط، سخت) | کار عملی با جواب پنهان | اول خودت حل کن، بعد جواب را باز کن |
| آزمونک | چند سؤال چندگزینهای | نتیجه در صفحهی «پیشرفت من» ذخیره میشود |
| جمعبندی و برگهی تقلب | نکتههای اصلی در چند خط | قبل از درس بعد یک بار بخوان |
مثالهای عملی
Section titled “مثالهای عملی”مثال ۱: بلوک دستور در برابر بلوک خروجی
Section titled “مثال ۱: بلوک دستور در برابر بلوک خروجی”در درسها دو نوع جعبهی کد میبینی. اولی دستور است: چیزی که تو تایپ میکنی.
whoamiدومی، که بالایش نوشته «خروجی»، چیزی است که کامپیوتر در جواب چاپ میکند. این را تایپ نمیکنی:
aliیک جعبهی سوم هم در بعضی درسها هست، با عنوان «دستورها و کلیدها»: وقتی باید علاوه بر تایپ دستور، کلیدی مثل Ctrl+C یا Enter را بزنی یا به سؤالی جواب بدهی. هر خط آن یک کار است، به همان ترتیب.
مثال ۲: خطهای «برچسب» در دستورها
Section titled “مثال ۲: خطهای «برچسب» در دستورها”گاهی داخل یک بلوک دستور خطهایی مثل این میبینی:
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 میبینی، درست پیش رفتهای، حتی اگر اسم فایل و ساعت فرق کند.
مثال ۴: برچسب «نمونه»
Section titled “مثال ۴: برچسب «نمونه»”بعضی دستورها را نمیشود روی سیستم آزمایشی اجرا کرد: مثلاً نصب WSL (فقط روی ویندوز) یا گرفتن گواهی HTTPS برای یک دامنهی واقعی. اینها با مستندات رسمی تطبیق داده شدهاند و برچسب «نمونه» دارند:
wsl --installیعنی: دستور درست است، ولی خروجیاش را از سیستم واقعی خودم نگرفتهام. هر جا این برچسب نیست، دستور واقعاً اجرا شده و خروجی همان است که کامپیوتر داده.
مثال ۵: پیام خطا را بخوان
Section titled “مثال ۵: پیام خطا را بخوان”پیام خطا دشمن نیست؛ راهنماست. تقریباً همیشه سه چیز میگوید: چه برنامهای شکایت دارد، از چه چیزی، و چرا:
cat: notes.txt: No such file or directorycat: برنامهای که خطا داد.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» یعنی چه؟
جواب درست: اجازهی ساختن پوشه در /etc را نداری
Permission denied یعنی اجازه نداری؛ /etc مال مدیر سیستم است و برای کار در آن sudo لازم است (دورهی لینوکس).
مثال ۶: وقتی گیر کردی
Section titled “مثال ۶: وقتی گیر کردی”ترتیب پیشنهادی، از سریع به کند:
- پیام خطا را دوباره و آرام بخوان. نصف مشکلها همینجا حل میشوند.
- دستورت را با دستور درس مقایسه کن، حرفبهحرف: فاصلهها، علامتها، حروف بزرگ و کوچک.
- بخش «اشتباهات رایج» همان درس را ببین؛ احتمالاً خطای تو آنجاست.
- پیام خطا را جستجو کن. فقط قسمت ثابت را، داخل کوتیشن، مثلاً
"Permission denied (publickey)"، نه اسم فایلهای خودت. مستندات خود برنامه (manو--helpدر دورهی لینوکس) هم منبع اصلی است. - سؤال بپرس، به شکل درست (پایین).
مثال ۷: چطور سؤال بپرسی
Section titled “مثال ۷: چطور سؤال بپرسی”سؤال بد: «دستور کار نمیکند. کمک!». کسی نمیتواند جواب بدهد. سؤال خوب چهار چیز دارد:
۱) چه میخواستم: میخواستم با 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. هر درس فقط از چیزهایی استفاده میکند که قبلاً دیدهای، و هر جا مجبور شده از چیزی جلوتر استفاده کند، صریحاً میگوید «این را در درس بعد کامل یاد میگیری؛ فعلاً همینقدر بدان». پس اگر وسط یک درس به چیزی ناآشنا رسیدی که چنین توضیحی ندارد، احتمالاً یک درس قبلی را جا انداختهای. صفحهی مسیر یادگیری ترتیب کامل را نشان میدهد و صفحهی پیشرفت من درسهایی را که تمام کردهای.
جدولهای مرجع
Section titled “جدولهای مرجع”| کلمهی انگلیسی پرتکرار | معنی |
|---|---|
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 “۲) باز کردن جواب تمرین قبل از تلاش”جواب را خواندن حسِ «فهمیدم» میدهد، ولی ذهنت تلاشی نکرده است. راهحل: دستکم ده دقیقه خودت تلاش کن؛ اگر نشد، جواب را بخوان و بعد بدون نگاه کردن دوباره بنویس.
۳) ترسیدن از خطا و رد شدن از کنارش
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» یعنی هیچ جوابی نیامد.
آزمونک
Section titled “آزمونک”جعبهای که بالایش نوشته «خروجی» را چه کنی؟
جواب درست: فقط بخوانی؛ جواب کامپیوتر است
فقط بلوک دستور را تایپ میکنی.
خروجی تو تاریخ و شمارههای دیگری دارد. یعنی…
جواب درست: عادی است؛ شکل خروجی و پیامها مهماند
اسم، تاریخ، PID و IP روی هر سیستم فرق دارد.
برچسب «نمونه» یعنی…
جواب درست: دستور با مستندات تطبیق داده شده ولی روی سیستم آزمایشی اجرا نشده
بقیهی دستورها واقعاً اجرا شدهاند.
«Permission denied» یعنی…
جواب درست: اجازه نداری
بررسی کن فایل مال کیست و آیا sudo لازم است.
کدام سؤال بهتر است؟
جواب درست: هدف + دستوری که زدم + خروجی کامل بهصورت متن + کارهایی که امتحان کردم
با این چهار بخش جواب سریع میگیری.
جمعبندی
Section titled “جمعبندی”- این دورهها کلاس عملیاند: همهی مثالها را خودت تایپ و اجرا کن.
- بلوک دستور را تایپ میکنی؛ بلوک خروجی جواب کامپیوتر است؛ «دستورها و کلیدها» یعنی ترتیب تایپ و کلیدها.
- اسم، تاریخ، PID، IP و نسخه روی سیستم تو فرق دارد؛ شکل خروجی و پیامها باید یکی باشد.
- «نمونه» یعنی اجرا نشده ولی با مستندات تطبیق داده شده.
- پیام خطا را تکهتکه بخوان: کدام برنامه، روی چه چیزی، چرا.
- گیر کردی: پیام را دوباره بخوان، با درس مقایسه کن، «اشتباهات رایج»، جستجو، و در آخر سؤال چهاربخشی.
| دستور | کاری که میکند |
|---|---|
No such file or directory | پیدا نشد: اسم و پوشه را بررسی کن |
Permission denied | اجازه نداری: صاحب فایل؟ sudo؟ |
command not found | غلط تایپی یا نصب نیست |
syntax error | علامتها و فاصلهها |
Connection refused | کسی روی پورت گوش نمیدهد |
Connection timed out | جوابی نیامد: آدرس، شبکه، فایروال |
سؤال خوب | هدف + دستور + خروجی متنی + آزمایشها |