فصل ۱: مفاهیم بنیادین پوسته (Shell)
هنگامی که از «خط فرمان» سخن میگوییم، در واقع به پوسته یا همان
Shell اشاره داریم. پوسته یک برنامهی واسط و مفسر است که دستورات متنی
واردشده توسط کاربر را از طریق صفحهکلید دریافت کرده و آنها را جهت اجرا به سیستمعامل ارجاع میدهد.
تقریباً تمامی توزیعهای لینوکس بهصورت پیشفرض از پوستهای متعلق به پروژهی گنو تحت عنوان
bash بهره میبرند. واژهی bash سرنام عبارت
Bourne Again SHell است که به جایگزینیِ تکاملیافته برای sh
(پوستهی اصلی و کلاسیک یونیکس که توسط «استیو بورن» توسعه یافته بود) اشاره دارد.
شبیهسازهای ترمینال (Terminal Emulators)
در محیطهای مبتنی بر رابط کاربری گرافیکی (GUI)، برای تعامل با پوسته به نرمافزاری به نام
شبیهساز ترمینال نیاز داریم. با جستوجو در منوی برنامههای دسکتاپ خود، قطعاً یکی از این ابزارها را
خواهید یافت. بهطور معمول، محیط دسکتاپ KDE از konsole و محیط GNOME از
gnome-terminal استفاده میکنند، هرچند ممکن است در فهرست برنامهها صرفاً با عنوان
عمومی «Terminal» نمایش داده شوند. شبیهسازهای ترمینال متعددی برای لینوکس وجود دارند، اما همگی
یک هدف مشترک را دنبال میکنند: فراهمسازی بستری برای دسترسی به پوسته. انتخاب میان آنها غالباً
بر اساس ترجیحات شخصی و قابلیتهای جانبی هر کدام صورت میگیرد.
تعامل با خط فرمان
بسیار خب، زمان آغاز فرآیند عملی فرارسیده است. شبیهساز ترمینال خود را اجرا کنید. پس از باز شدن برنامه، محیطی مشابه نمونهی زیر را مشاهده خواهید کرد:
[me@linuxbox ~]$
این خط به عنوان اعلان خط فرمان (Shell Prompt) شناخته میشود و هر زمان که سیستم آمادهی
دریافت دستور جدید باشد، ظاهر میگردد. ساختار دقیق این اعلان ممکن است بسته به نوع توزیع
لینوکس متفاوت باشد، اما بهطور معمول شامل نام کاربری، نام رایانه (که با کاراکتر
@ از هم جدا شدهاند)، دایرکتوری کاری فعلی (که در فصول آتی به تفصیل بررسی میشود)
و در نهایت کاراکتر $ است.
$)، علامت هش
(#) باشد، بدین معناست که نشست (Session) فعلی دارای سطح دسترسی ابرکاربر
(Superuser) است. این وضعیت نشان میدهد که شما یا با حساب کاربری root
وارد شدهاید و یا ترمینال را با امتیازات مدیریتی اجرا کردهاید.
با فرض صحت تنظیمات، چند کاراکتر تصادفی را مشابه نمونهی زیر در مقابل اعلان وارد کنید:
[me@linuxbox ~]$ kaekfjaeifj
از آنجا که این رشته فاقد معنای عملیاتی است، پوسته با صدور پیامی به شما اطلاع میدهد که دستور مذکور یافت نشد و بلافاصله برای دریافت ورودی بعدی آماده میشود:
bash: kaekfjaeifj: command not found
[me@linuxbox ~]$
تاریخچه دستورات
چنانچه کلید جهتنمای رو به بالا (Up Arrow) را فشار دهید، مشاهده خواهید کرد که دستور پیشین،
یعنی kaekfjaeifj مجدداً در مقابل اعلان ظاهر میشود. این قابلیت تحت عنوان
تاریخچهی دستورات شناخته میشود. در اکثر توزیعهای مدرن لینوکس،
بهصورت پیشفرض ۱۰۰۰ دستور اخیر در حافظه ذخیره میگردند. همچنین با فشردن کلید جهتنمای رو به
پایین (Down Arrow)، میتوانید میان دستورات پیمایش کرده یا دستور فراخوانیشده را از خط فعلی
حذف کنید.
پیمایش مکاننما
دستور قبلی را با استفاده از کلید جهتنمای بالا بازخوانی کنید. با استفاده از کلیدهای جهتنمای چپ و راست، ملاحظه خواهید کرد که امکان جابهجایی مکاننما در طول خط فرمان وجود دارد. این ویژگی، فرآیند اصلاح و ویرایش دستورات طولانی را بسیار تسهیل میکند.
مدیریت تمرکز (Focus) و تعامل با ماوس
هرچند پوسته ماهیتی مبتنی بر صفحهکلید دارد، اما در شبیهساز ترمینال امکان بهرهگیری از ماوس نیز فراهم است. در سیستم پنجرهبندی X Window System (یکی از زیرساختهای گرافیکی توزیعهای لینوکس)، مکانیزمی کارآمد برای عملیات کپی و درج سریع (Copy/Paste) تعبیه شده است؛ بدین صورت که با هایلایت کردن متن توسط دکمه سمت چپ ماوس، محتوا بهطور خودکار در بافر (Buffer) ذخیره شده و با فشردن دکمه میانی (یا چرخک ماوس)، در محل مکاننما درج میگردد.
Ctrl+C و Ctrl+V برای
کپی و پیست استفاده نکنید. این میانبرها در پوسته مفاهیم عملیاتی متفاوتی دارند که دههها پیش از
ظهور سیستمعامل ویندوز تعریف شدهاند (بهعنوان مثال، Ctrl+C برای توقف اجرای
فرآیند جاری به کار میرود).
محیطهای دسکتاپ مدرن (مانند GNOME یا KDE) جهت انطباق با تجربه کاربری ویندوز، بهصورت پیشفرض از سیاست Click to Focus استفاده میکنند؛ یعنی برای فعالسازی یک پنجره حتماً باید روی آن کلیک کنید. این رفتار با رویکرد سنتی دنیای یونیکس تحت عنوان Focus Follows Mouse متفاوت است. در حالت سنتی، صرفاً با قرار گرفتن نشانگر ماوس بر روی یک پنجره، آن پنجره آماده دریافت ورودی میشود، بدون آنکه لزوماً به بالاترین لایه (پیشزمینه) منتقل شود.
تنظیم سیاست مدیریت تمرکز بر روی حالت «تمرکز به دنبال ماوس»، کارایی تکنیک کپی و درج سریع را دوچندان میکند. پیشنهاد میشود در صورت پشتیبانی محیط دسکتاپتان، این قابلیت را در تنظیمات مدیر پنجره (Window Manager) خود آزموده و مدتی با آن فعالیت کنید؛ بسیاری از کاربران حرفهای این رویکرد را بسیار بهرهورتر میدانند.
اجرای دستورات مقدماتی
اکنون که با سازوکار ورود متن در شبیهساز ترمینال آشنا شدید، زمان آن فرا رسیده است که چند دستور ساده و کاربردی را آزمایش کنیم.
ابتدا با دستور date شروع میکنیم که زمان و تاریخ دقیق سیستم را گزارش میدهد:
[me@linuxbox ~]$ date
Thu Mar 8 15:09:41 EST 2025
دستور کاربردی دیگر uptime نام دارد؛ این ابزار مدتزمان سپریشده از آخرین
راهاندازی سیستم (Boot)، تعداد کاربران فعال و میانگین بار سیستم (Load Average) را در
بازههای زمانی مختلف نمایش میدهد:
[me@linuxbox ~]$ uptime
15:12:22 up 3 days, 23:40, 7 users, load average: 0.37, 0.37, 0.64
جهت پایش وضعیت فضای ذخیرهسازی و مشاهدهی ظرفیت آزاد پارتیشنهای سیستم، دستور
df (مخفف disk free) را وارد کنید:
[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
به همین ترتیب، برای بررسی وضعیت حافظهی اصلی (RAM) و مقدار حافظهی آزاد، دستور
free را اجرا نمایید:
[me@linuxbox ~]$ free
total used free shared buffers cached
Mem: 513712 503976 9736 0 5312 122916
-/+ buffers/cache: 375748 137964
Swap: 1052248 10472 947536
خاتمه نشست ترمینال
شما میتوانید به سه روش مختلف به فعالیت خود در محیط ترمینال خاتمه داده و نشست جاری را ببندید:
- بستن پنجرهی شبیهساز ترمینال از طریق رابط گرافیکی.
- تایپ و اجرای دستور
exitدر خط فرمان. - استفاده از میانبر صفحهکلید
Ctrl+D(این کاراکتر در دنیای یونیکس به معنای پایان فایل یا End-of-File است و به پوسته اعلام میکند که ورودی دیگری وجود ندارد).
[me@linuxbox ~]$ exit
کنسولهای مجازی (Virtual Terminals)
حتی زمانی که هیچ شبیهساز ترمینالی در محیط دسکتاپ باز نیست، چندین نشست متنی در لایههای
زیرین سیستمعامل بهصورت فعال در دسترس هستند. در اغلب توزیعهای لینوکس، میتوانید با استفاده
از ترکیب کلیدهای Ctrl+Alt+F1 تا Ctrl+Alt+F6 به این نشستها
که ترمینالهای مجازی (Virtual Terminals) یا کنسولهای مجازی نامیده میشوند، دسترسی پیدا کنید.
هنگام ورود به یک کنسول مجازی، یک محیط ورود (Login) متنی ظاهر میشود که از شما نام کاربری و
رمز عبور میخواهد. پس از ورود، برای جابهجایی میان این کنسولها، صرفاً استفاده از کلیدهای
Alt+F1 تا Alt+F6 کافی است. در اکثر سیستمهای مدرن، برای بازگشت
به رابط کاربری گرافیکی (GUI)، معمولاً از کلید Alt+F7 (یا در برخی موارد
Alt+F1 یا Alt+F2) استفاده میشود.
جمعبندی
در این فصل، سفر خود را در قلمرو خط فرمان لینوکس آغاز کردیم. با مفهوم پوسته (Shell) آشنا شدیم، به بررسی ساختار کلی محیط متنی پرداختیم و سازوکار آغاز و پایان یک نشست ترمینال را فراگرفتیم. همچنین آموختیم که چگونه دستورات ساده را اجرا کرده و از قابلیتهایی نظیر تاریخچهی دستورات و ویرایش خط فرمان بهره ببریم.
این گام نخست اثبات کرد که محیط خط فرمان برخلاف تصورات رایج، نهتنها هولناک نیست، بلکه ابزاری منطقی و کارآمد است. در فصل آتی، با دستورات بیشتری آشنا خواهیم شد و به کاوش در ساختار سلسلهمراتبی سیستم فایل لینوکس خواهیم پرداخت.
منابع مطالعه تکمیلی
جهت آشنایی بیشتر با استیو بورن (Steve Bourne)، خالق پوسته بورن (Bourne shell)، میتوانید به مقاله زیر در ویکیپدیا مراجعه کنید:
مقاله زیر در ویکیپدیا به معرفی برایان فاکس (Brian Fox)، توسعهدهنده و برنامهنویس اصلی پوسته Bash اختصاص یافته است:
همچنین، برای درک عمیقتر مفهوم پوسته (Shell) در علوم رایانه، مطالعه مقاله زیر پیشنهاد میشود: