فصل ۱ – شل چیست؟

وقتی درباره‌ی خط فرمان صحبت می‌کنیم، در واقع به شل اشاره داریم. شل برنامه‌ای است که فرمان‌های صفحه‌کلید را دریافت کرده و برای اجرا به سیستم‌عامل تحویل می‌دهد. تقریباً همه‌ی توزیع‌های لینوکس یک برنامه‌ی شل از پروژه‌ی GNU به نام bash ارائه می‌کنند. نام «bash» مخفف عبارت Bourne Again SHell است؛ اشاره‌ای به این‌که bash جایگزینی ارتقاءیافته برای sh، برنامه‌ی شل اصلی یونیکس نوشته‌شده توسط Steve Bourne است.


شبیه‌سازهای ترمینال

هنگام استفاده از یک رابط کاربری گرافیکی (GUI)، برای تعامل با شل به برنامه‌ای به نام شبیه‌ساز ترمینال نیاز داریم. اگر منوهای دسکتاپ را جستجو کنیم، احتمالاً آن را خواهیم یافت. KDE از konsole و GNOME از gnome-terminal استفاده می‌کند، هرچند معمولاً در منو با نام ساده‌ی «terminal» دیده می‌شود. شبیه‌سازهای دیگری نیز برای لینوکس وجود دارند، اما همه اساساً یک کار انجام می‌دهند: دسترسی به شل. ممکن است بر اساس امکانات اضافه، یکی از آن‌ها را به دیگری ترجیح دهید.


نخستین ضربه‌های صفحه‌کلید

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

[me@linuxbox ~]$

این را prompt شل می‌نامند و هر وقت شل آماده‌ی دریافت ورودی باشد ظاهر می‌شود. بسته به توزیع ممکن است ظاهرش کمی متفاوت باشد، اما معمولاً شامل username@machinename، سپس مسیر کاری فعلی، و در پایان یک علامت $ است.

نکته: اگر آخرین کاراکتر prompt علامت # باشد به جای $، یعنی نشست ترمینال دارای دسترسی ابرکاربر (superuser) است. یعنی یا به عنوان root وارد شده‌ایم یا شبیه‌ساز ترمینالی با امتیاز مدیریتی انتخاب کرده‌ایم.

فرض کنیم همه‌چیز درست است. حالا چیزی تایپ کنیم. مثلاً یک رشته‌ی بی‌معنی:

[me@linuxbox ~]$ kaekfjaeifj
bash: kaekfjaeifj: command not found
[me@linuxbox ~]$

از آنجا که این دستور معنایی ندارد، شل پیام خطا می‌دهد و یک prompt تازه ظاهر می‌کند.


تاریخچه‌ی دستورات

اگر کلید فلش بالا را بزنیم، دستور قبلی kaekfjaeifj دوباره بعد از prompt ظاهر می‌شود. این ویژگی تاریخچه‌ی دستورات نام دارد. بیشتر توزیع‌های لینوکس به‌طور پیش‌فرض ۱۰۰۰ دستور آخر را به خاطر می‌سپارند. با زدن فلش پایین، دستور قبلی ناپدید می‌شود.


حرکت مکان‌نما

با زدن دوباره فلش بالا، دستور قبلی بازخوانی می‌شود. حالا اگر کلیدهای فلش چپ و راست را فشار دهیم، مکان‌نما روی خط حرکت می‌کند. این کار ویرایش دستورات را آسان می‌سازد.


چند کلمه درباره‌ی ماوس و Focus

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

نکته: از Ctrl-c و Ctrl-v برای کپی/چسباندن در پنجره‌ی ترمینال استفاده نکنید. این کلیدها در شل معنی دیگری دارند و سال‌ها قبل از ویندوز تعریف شده‌اند.

محیط دسکتاپ شما (احتمالاً KDE یا GNOME) برای شبیه‌سازی رفتار ویندوز، سیاست تمرکز خود را روی click to focus گذاشته است. این یعنی برای فعال شدن یک پنجره باید روی آن کلیک کنید. اما در رفتار سنتی X، سیاست focus follows mouse وجود دارد که یعنی کافی است ماوس را روی پنجره ببرید تا فعال شود، حتی اگر به پیش‌زمینه نیاید. این کار، روش کپی/پیست را بسیار کارآمدتر می‌کند.


چند فرمان ساده امتحان کنید

حالا که توانستیم متن وارد ترمینال کنیم، بیایید چند دستور ساده اجرا کنیم.

[me@linuxbox ~]$ date
Thu Mar 8 15:09:41 EST 2025

[me@linuxbox ~]$ uptime
15:12:22 up 3 days, 23:40, 7 users, load average: 0.37, 0.37, 0.64

[me@linuxbox ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15115452 5012392 9949716 34% /
/dev/sda5 59631908 26545424 30008432 47% /home
/dev/sda1 147764 17370 122765 13% /boot
tmpfs 256856 0 256856 0% /dev/shm

[me@linuxbox ~]$ free
total used free shared buffers cached
Mem: 513712 503976 9736 0 5312 122916
-/+ buffers/cache: 375748 137964
Swap: 1052248 104712 947536


پایان دادن به نشست ترمینال

برای بستن نشست ترمینال سه راه داریم:

  1. بستن پنجره‌ی شبیه‌ساز ترمینال.
  2. تایپ دستور exit.
  3. زدن کلید Ctrl-d.

[me@linuxbox ~]$ exit


کنسول پشت پرده

حتی اگر هیچ شبیه‌ساز ترمینالی باز نباشد، چندین نشست ترمینال در پس‌زمینه فعال هستند. به این نشست‌ها کنسول‌های مجازی (virtual consoles) می‌گویند. روی اکثر توزیع‌های لینوکس می‌توان با Ctrl-Alt-F1 تا Ctrl-Alt-F6 به آن‌ها دسترسی یافت. هر نشست یک login prompt نشان می‌دهد تا نام کاربری و گذرواژه را وارد کنید. برای جابه‌جایی بین کنسول‌ها از Alt-F1 تا Alt-F6 استفاده کنید. در بیشتر سیستم‌ها می‌توان با Alt-F7 به دسکتاپ گرافیکی برگشت.


جمع‌بندی

این فصل آغاز سفر ما به خط فرمان لینوکس بود؛ با معرفی شل، نگاه کوتاهی به خط فرمان و یادگیری چگونگی آغاز و پایان یک نشست ترمینال. همچنین چند دستور ساده اجرا کردیم و اندکی ویرایش خط فرمان انجام دادیم. دیدید؟ اصلاً ترسناک نبود!

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