آنقدر برگههای میانبُرِ دستورهای لینوکس را مرور کردهام که روال همیشگیاش را میدانم. cd پوشهها را عوض میکند، mkdir یکی میسازد، rm چیزها را پاک میکند، و چند هفته بعد دوباره پای ترمینال مینشینم و از خودم میپرسم کدام دستور چه میکرد. دستورهای زیادی در ترمینال لینوکس هست که میتواند پوسته را کمهراستر کند، اما برای من حفظکردنشان از روی فهرست، هیچوقت چندان جواب نداده است.
گیمشل برای همه این دستورها جایی ساخته که در ذهن بمانند. بهجای حفظکردنشان در خلأ، در حال بالا رفتن از برج یک قلعه بودم، کلبهای میساختم، عنکبوتها را از سردابه بیرون میکردم و سکهها را با همان دستورهایی جابهجا میکردم که در یک پوسته معمولی هم به کار میبرم.
گیمشل ترمینال را به نقشه بدل میکند
نصب، آسانترین مأموریت

گیمشل برای کمک به دانشجویان دانشگاه ساووا مونبلان ساخته شده تا پوسته یونیکس را در یک نشست واقعی بش، با مجموعهای از مأموریتهای لایهلایه، یاد بگیرند. اینجا در یک ترمینال ساختگی تمرین نمیکنید که بعداً دور انداخته شود. گیمشل دایرکتوری خانه را به پوشه جهانِ بازی خودش میبرد؛ جایی که مأموریتها قلعهها، جنگلها، فایلها و باقی صحنه را میسازند، اما پوسته زیرِ آن همچنان واقعی میماند. دستورها هم همان دستورهای معمول پوستهاند، پس احتیاط همیشگی درباره ابزارهایی مثل rm همچنان بهجا است.
راهاندازی آن در لینوکس خیلی سرراست است. در دبیان یا اوبونتو، پروژه bash ، gettext-base و awk را وابستگیهای اصلی میداند و برای بعضی مأموریتها چند بسته اضافی هم لازم است. روش شروع سریع این است که تازهترین بایگانی خوداستخراجگر را با wget بگیرید و با bash gameshell.sh اجرا کنید. وقتی کارتان تمام شد، Ctrl+D یا gsh exit پیشرفتتان را در gameshell-save.sh ذخیره میکند تا بعداً با اجرای آن، از همانجا ادامه دهید.
وقتی گیمشل بالا میآید، تکهای از تصویرسازی متنیِ درشت و یک معرفی کوتاه از جهانی که قرار است در آن پرسه بزنید پیش رویتان میگذارد. مأموریت آغازین شما را درون یک قلعه میاندازد و از شما میخواهد راه خود را تا بالای برج اصلی باز کنید. اگر یادتان برود باید چه کنید، gsh goal هر زمان لازم باشد هدف فعلی را نشان میدهد، همراه با دستورهایی که شاید برای فهمیدن گام بعدی به کارتان بیاید.

خودِ گیمشل بیشتر کنار میایستد. gsh check کارتان را داوری میکند و وقتی درست انجامش داده باشید، شما را به مأموریت بعدی میفرستد؛ اگر هم شکست بخورید، مأموریت از نو آغاز میشود تا دوباره امتحان کنید. gsh reset اجازه میدهد اگر اوضاع را بههم ریختهاید، دستی از نو شروع کنید، و gsh help هم چند دستور محدودِ ویژهٔ گیمشل را توضیح میدهد. هرچه میان این ایستگاهها رخ میدهد، کار معمولِ پوسته است.
دستورها وقتی کارکردی دارند، روشنتر میشوند
ظاهراً عنکبوتها آموزگاران خوبیاند





آن مأموریت نخستِ برج ساده است، اما خیلی زود ایده را جا میاندازد. قرار نبود از من بپرسند cd یعنی چه. باید پوشههای در دسترس را با ls بررسی میکردم، با cd در آنها جابهجا میشدم و با pwd مطمئن میشدم واقعاً دارم به سوی بالای برج اصلی قلعه بالا میروم. وقتی به مقصد رسیدم، مأموریت تمام شد و گیمشل مرا جلو برد.
مأموریتها از آنجا به بعد، بیآنکه فهرست بزرگی از دستورها را یکجا جلویتان بریزند، کمکم سختتر میشوند. بعد از سرک کشیدن به جاهایی مثل سردابه و تالار تخت، یکی از وظیفهها شما را به جنگل میفرستد و میخواهد در آن یک کلبه بسازید و درونش یک صندوق بگذارید. هنوز هم دستور mkdir است، اما حالا دایرکتوریای که میسازید شبیه یک جای واقعی در دنیای کوچک گیمشل حس میشود.
بعد نوبت سردابه و دردسر عنکبوتها میرسد. باید پروندههای عنکبوت را با rm پاک کنید و خفاشها را بهحال خود بگذارید، چون ظاهراً حتی نرمافزارهای آموزش یونیکس هم برای خودشان اصولی دارند. مأموریت دیگری سکهها را در باغ پخش میکند و از شما میخواهد با mv آنها را به صندوقتان منتقل کنید. مأموریتهای بعدی پروندههای پنهان و الگوهای عام را وارد میکنند و بعد cp را هم به میان میآورند، آنجا که از شما میخواهند بهجای برداشتن اصل، نسخهای از هنجارهای تالار بزرگ بسازید.
این روند برای من جا افتاد، چون هر دستور نتیجهای فوری و دیدنی داشت. mv به دستوری تبدیل شد که سکهها را واقعاً جابهجا میکرد، و rm چیزی را که در سردابه بود عوض میکرد. وقتی هر کار را تمام میکردم، gsh check پاسخی روشن میداد، نه اینکه بگذارد حدس بزنم آیا واقعاً تمرین را درست به پایان رساندهام یا نه.
چرخهای آموزشی، سرانجام برداشته میشوند
خط لولهها سیاهچال را ژرفتر میکنند

گیمشل فراتر از تمرینهای ابتداییِ سامانهٔ فایل، چیزهای زیادی برای عرضه دارد. درخت مأموریتهای کنونی آن گروههایی برای یافتن فایلها، مجوزها، فرایندها، ورودی و خروجی استاندارد و پایپها را در بر میگیرد. مأموریتهای «کتاب معجونها» فرمانهایی مانند `head`، `tail` و `cat` را معرفی میکنند و سپس سراغ ترکیب آنها با عملگر پایپ `|` میروند. راستی، از همینجا درک ورودی و خروجی استاندارد در لینوکس کمکم واقعاً به کار میآید.
این ما را به بخشی از کارِ خط فرمان نزدیکتر میکند که بهنظرم فراموشکردنش آسانتر است. دانستن تکتک فرمانها فقط تا حدی به کار میآید. کار روزمره با شل اغلب یعنی زنجیر کردن ابزارها، پالایش متن، تغییر مسیر دادن خروجی، یا فهمیدن اینکه کدام فرایند به توجه نیاز دارد، و گیمشل آرامآرام شما را وادار میکند در همین چارچوب فکر کنید. مأموریتهای فرایند آن، برای نمونه، شما را با مدیریت فرایندهای لینوکس و ابزارهایی مانند `ps`، `kill` و `pstree` آشنا میکند.
با این همه، هنوز جای صفحهٔ راهنمای man را نمیگیرد و قرار هم نیست همهٔ سوییچهایی را که سرانجام با آنها روبهرو میشوید به شما یاد بدهد. حالوهوای فانتزیِ آن هم همان حسِ دلنشین و دستیساختهای را دارد که از یک پروژهٔ آموزشی متنباز انتظار میرود.
ترجیح میدهم مأموریت داشته باشم تا برگهٔ تقلب
هنوز هم قرار است سوییچها را فراموش کنم، در مستندات جستوجو کنم و هر وقت لازم باشد پیش از بهکار بردن چیزی که دهها بار اجرا کردهام، سراغ فرمان `man` بروم تا صفحهٔ راهنمای یک فرمان لینوکس را ببینم. گیمشل نیازی ندارد هیچیک از اینها را درست کند. من فقط میخواستم راه بهتری برای تمرینِ پایهها داشته باشم، بیآنکه دوباره از روی یک برگهٔ تقلب پیش بروم تا همهٔ فرمانها کمکم در هم گم شوند.
این هم بهطرزی دلنشین مضحک است که آدم یادگیریِ مدیریت فایل را از جایی شروع کند که زیرزمینِ یک قلعهٔ قرونوسطایی را عنکبوتها تسخیر کردهاند. اگر این کار باعث شود `cd`، `mkdir`، `mv` و پایپها کمی زودتر در حافظهٔ عضلانی جا بیفتند، من با کمال میل به بازی ادامه میدهم.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Oluwademilade Afolabi است. مشاهده مقاله اصلی