user@linux-tutorials: ~/tutorials/00-introduction — linux-tutorials

tutorials / linux / chapter-00.md · utf-8 ⬇ download chapter-00.md

مقدمه

From Zero to Linux Power User

Linux Terminal Mastery

From Zero to Linux Power User

Linux Terminal Mastery Banner

به دنیای لینوکس و قدرت خط فرمان خوش آمدید.

معرفی دوره

سیستم‌عامل لینوکس یکی از مهم‌ترین و تأثیرگذارترین فناوری‌های دنیای رایانش مدرن است.

از سرورهای عظیم اینترنتی و زیرساخت‌های ابری گرفته تا ابررایانه‌ها، تجهیزات شبکه، سیستم‌های نهفته و دستگاه‌های هوشمند، لینوکس در بخش بزرگی از فناوری‌های امروزی حضور دارد.

با وجود گسترش محیط‌های گرافیکی در توزیع‌های مختلف لینوکس، بخش بزرگی از قدرت واقعی این سیستم‌عامل در محیط خط فرمان یا Command Line Interface (CLI) قرار دارد.

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

هدف این کتاب، آموزش جامع و اصولی ترمینال لینوکس از سطح کاملاً مقدماتی تا سطح حرفه‌ای است؛ به گونه‌ای که خواننده پس از مطالعه و تمرین مطالب آن، فقط مجموعه‌ای از دستورات را حفظ نکرده باشد، بلکه درک عمیقی از نحوه عملکرد سیستم، ساختار فایل‌ها، مدیریت پردازش‌ها، شبکه، امنیت و خودکارسازی در محیط لینوکس به دست آورده باشد.

چرا یادگیری ترمینال لینوکس اهمیت دارد؟

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

مدیران سیستم، توسعه‌دهندگان نرم‌افزار، متخصصان امنیت، مهندسان DevOps و کاربران حرفه‌ای لینوکس، روزانه برای انجام وظایف مختلف به خط فرمان متکی هستند.

مهم‌ترین مزایای ترمینال:

  • سرعت بالاتر در انجام عملیات‌ها
  • کنترل دقیق‌تر سیستم
  • اجرای عملیات‌های پیچیده با چند دستور ساده
  • خودکارسازی وظایف تکراری
  • مدیریت سیستم‌های راه دور
  • دسترسی به ابزارهای تخصصی

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

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

ساختار ارتباط در لینوکس

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

بسیاری از کاربران، Terminal، Shell و Kernel را یک مفهوم واحد تصور می‌کنند؛ در حالی که هرکدام نقش متفاوتی در سیستم دارند.

ساختار ساده ارتباط میان کاربر و سخت‌افزار:

User
 |
 ▼
Terminal Emulator
 |
 ▼
Shell
 |
 ▼
Kernel
 |
 ▼
Hardware

Terminal Emulator چیست؟

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

این محیط که Terminal Emulator نام دارد، یک برنامه کاربردی است که نقش واسطه میان کاربر و Shell را ایفا می‌کند.

در گذشته، کاربران برای ارتباط با کامپیوترها از دستگاه‌هایی به نام Terminal استفاده می‌کردند. این دستگاه‌ها شامل یک صفحه‌نمایش و صفحه‌کلید بودند و امکان ارسال دستورات متنی به سیستم را فراهم می‌کردند.

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

وظیفه Terminal Emulator

Terminal Emulator خودش دستورها را اجرا نمی‌کند و مستقیماً با سخت‌افزار ارتباط ندارد.

وظیفه اصلی آن فراهم کردن محیطی برای ارتباط کاربر با Shell است.

مهم‌ترین وظایف Terminal Emulator:

  • دریافت ورودی کاربر
  • نمایش خروجی برنامه‌ها
  • مدیریت محیط متنی
  • ایجاد ارتباط میان کاربر و Shell

برای مثال، زمانی که کاربر دستور زیر را وارد می‌کند:

user@linux-tutorials: ~/ch-00BASH
ls

Terminal Emulator نمی‌داند این دستور چه کاری انجام می‌دهد.

تنها وظیفه آن ارسال دستور وارد شده به Shell است.

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

نمونه‌هایی از Terminal Emulator

در سیستم‌های لینوکسی، Terminal Emulatorهای مختلفی وجود دارند.

برخی از معروف‌ترین آن‌ها:

  • GNOME Terminal
  • XFCE Terminal
  • Konsole
  • Kitty
  • Alacritty

هرکدام از این برنامه‌ها ظاهر و امکانات متفاوتی دارند، اما هدف اصلی همه آن‌ها یکسان است:

فراهم کردن محیطی برای تعامل کاربر با Shell.

Shell چیست؟

Shell یک برنامه مفسر دستورات است که میان کاربر و سیستم‌عامل قرار می‌گیرد.

وظیفه Shell این است که دستورات نوشته شده توسط کاربر را دریافت کند، آن‌ها را تحلیل کند و درخواست مناسب را برای اجرای عملیات ایجاد کند.

[i]به زبان ساده: Terminal محیطی است که شما در آن دستور وارد می‌کنید.

Shell برنامه‌ای است که دستور شما را درک می‌کند.

نحوه کار Shell

فرض کنید کاربر دستور زیر را وارد می‌کند:

user@linux-tutorials: ~/ch-00BASH
ls

Shell باید چند مرحله را انجام دهد:

  1. تشخیص دهد که ls یک دستور معتبر است.
  2. برنامه مربوط به دستور را پیدا کند.
  3. گزینه‌ها و ورودی‌های دستور را بررسی کند.
  4. درخواست اجرای آن را ایجاد کند.
  5. نتیجه را دریافت کرده و نمایش دهد.

بنابراین Shell فقط یک محیط ساده برای نوشتن دستور نیست؛ بلکه یک مفسر قدرتمند برای تعامل با سیستم‌عامل است.

انواع Shell در لینوکس

در لینوکس Shellهای مختلفی وجود دارند:

  • Bash
  • Zsh
  • Fish
  • Dash
  • Ksh

هرکدام ویژگی‌ها و قابلیت‌های خاص خود را دارند.

[i]در این کتاب تمرکز اصلی بر روی Bash (Bourne Again Shell) خواهد بود، زیرا یکی از رایج‌ترین و استانداردترین Shellهای دنیای لینوکس محسوب می‌شود.

Bash چیست؟

Bash مخفف:

Bourne Again Shell

است.

Bash یکی از محبوب‌ترین Shellهای لینوکس است و در بسیاری از توزیع‌های لینوکس به صورت پیش‌فرض وجود دارد.

Bash علاوه بر اجرای دستورات ساده، امکانات قدرتمندی ارائه می‌دهد:

  • اجرای دستورات لینوکس
  • مدیریت فایل‌ها
  • استفاده از متغیرها
  • شرط‌ها
  • حلقه‌ها
  • اسکریپت‌نویسی
  • خودکارسازی وظایف

به همین دلیل Bash تنها یک مفسر دستور نیست؛ بلکه ابزاری قدرتمند برای مدیریت سیستم محسوب می‌شود.

Kernel چیست؟

Kernel هسته اصلی سیستم‌عامل لینوکس است.

Kernel وظیفه مدیریت ارتباط میان نرم‌افزارها و سخت‌افزارها را بر عهده دارد.

تمام برنامه‌هایی که روی سیستم اجرا می‌شوند، برای انجام بسیاری از عملیات‌های مهم به Kernel وابسته هستند.

چگونه یک دستور در لینوکس اجرا می‌شود؟

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

برای مثال:

user@linux-tutorials: ~/ch-00BASH
ls

روند کلی:

User
 |
 ▼
Terminal Emulator
 |
 ▼
Shell
 |
 ▼
Kernel
 |
 ▼
Hardware

ابتدا کاربر دستور را وارد می‌کند.

Terminal Emulator ورودی کاربر را دریافت کرده و آن را به Shell ارسال می‌کند.

Shell ورودی را تجزیه می‌کند، گسترش‌هایی مانند متغیرها و wildcardها را انجام می‌دهد و اگر دستور builtin نباشد، فایل اجرایی مربوط را پیدا و یک پردازش برای آن ایجاد می‌کند.

Shell برای ایجاد پردازش از System Callها استفاده می‌کند؛ پس از آن معمولاً خود برنامهٔ اجراشده (برای مثال ls) برای دسترسی به فایل‌ها، حافظه و دستگاه‌ها System Callهای لازم را مستقیماً فراخوانی می‌کند. برنامه‌ها به‌طور معمول از کتابخانه‌هایی مانند glibc به این رابط Kernel می‌رسند، نه اینکه هر درخواست از Shell عبور کند.

Kernel مجوزها را بررسی و منابع مورد نیاز را مدیریت می‌کند.

در نهایت نتیجه عملیات دوباره به Shell و سپس به Terminal بازگردانده می‌شود.

System Call چیست؟

System Call روشی است که برنامه‌ها از طریق آن با Kernel ارتباط برقرار می‌کنند.

برنامه‌ها نمی‌توانند مستقیماً سخت‌افزار را کنترل کنند.

برای انجام عملیات‌هایی مانند:

  • خواندن فایل
  • ایجاد پردازش
  • استفاده از حافظه
  • ارتباط با دستگاه‌ها

از System Call استفاده می‌کنند.

ساختار ساده:

Application
 |
 ▼
System Call
 |
 ▼
Kernel
 |
 ▼
Hardware

تفاوت Terminal و Shell

یکی از اشتباهات رایج کاربران تازه‌کار، یکی دانستن Terminal و Shell است.

Terminal Shell
محیط ارتباط کاربر با سیستم است مفسر دستورات است
ورودی و خروجی را نمایش می‌دهد دستورات را تحلیل و اجرا می‌کند
خودش دستورها را درک نمی‌کند منطق اجرای دستورها را مدیریت می‌کند
[i]به زبان ساده: Terminal پنجره‌ای است که داخل آن کار می‌کنید.

Shell برنامه‌ای است که دستورهای شما را می‌فهمد.

فلسفه یادگیری

یادگیری لینوکس فقط حفظ کردن دستورات نیست.

یک کاربر حرفه‌ای لینوکس باید بداند:

  • یک دستور چگونه کار می‌کند؟
  • چرا چنین ابزاری ساخته شده است؟
  • سیستم در پشت صحنه چه عملی انجام می‌دهد؟
  • چگونه می‌توان از ابزارهای لینوکس برای حل مشکلات واقعی استفاده کرد؟

به همین دلیل، هر موضوع در این کتاب در چهار مرحله بررسی خواهد شد:

مفهوم
↓
کاربرد
↓
تمرین
↓
پروژه

مسیر یادگیری

این کتاب مسیر خود را از ساده‌ترین مفاهیم آغاز می‌کند:

  • آشنایی با محیط ترمینال
  • شناخت Shell و Bash
  • ساختار فایل سیستم لینوکس
  • مدیریت فایل‌ها
  • کاربران و مجوزها
  • مدیریت نرم‌افزارها
  • پردازش‌ها و سرویس‌ها
  • شبکه در لینوکس
  • Bash Scripting
  • SSH
  • امنیت لینوکس
  • مدیریت سرور
  • خودکارسازی وظایف

سخن پایانی

تسلط بر ترمینال لینوکس تنها یادگیری یک ابزار نیست؛ بلکه یادگیری یک روش تفکر است.

ترمینال به کاربر اجازه می‌دهد سیستم را نه فقط به عنوان یک مصرف‌کننده، بلکه به عنوان یک مدیر، توسعه‌دهنده و سازنده درک کند.

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

به دنیای لینوکس و قدرت خط فرمان خوش آمدید. 🐧