# فصل اول: مبانی ترمینال لینوکس

## Linux Terminal Basics

ترمینال قلب تعامل با سیستم‌عامل لینوکس است.

در فصل قبل با مفاهیم پایه مانند Terminal Emulator، Shell و Kernel آشنا شدیم و یاد گرفتیم که چگونه یک درخواست کاربر از چندین لایه عبور می‌کند تا در نهایت توسط سیستم اجرا شود.

اکنون زمان آن رسیده است که به صورت عملی وارد محیط ترمینال شویم و یاد بگیریم چگونه با لینوکس صحبت کنیم.

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

---

# اولین برخورد با ترمینال

هنگامی که ترمینال لینوکس را باز می‌کنید، معمولاً چیزی شبیه این مشاهده خواهید کرد:

    asa@computer:~$

این خط که در ترمینال مشاهده می‌کنید، Prompt نام دارد.

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

در مثال بالا:

    asa@computer:~$

هر بخش اطلاعات خاصی را نمایش می‌دهد.

---

# ساختار Prompt در لینوکس

یک Prompt معمولی لینوکس از چند بخش تشکیل شده است:

    username@hostname:directory$

برای مثال:

    amir@thinkpad:~/projects$

اجزای آن:

## Username

بخش اول نام کاربری فعلی سیستم است.

مثلاً:

    amir

یعنی کاربر فعلی با نام amir وارد سیستم شده است.

---

## Hostname

بخش دوم نام کامپیوتر یا دستگاه است.

مثلاً:

    thinkpad

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

---

## Current Directory

بخشی که بعد از علامت `:` قرار دارد، مسیر فعلی کاربر را نشان می‌دهد.

مثلاً:

    ~/projects

یعنی کاربر در پوشه projects داخل Home Directory قرار دارد.

---

## علامت پایان Prompt

در انتهای Prompt معمولاً یکی از این علامت‌ها دیده می‌شود:

    $

یا:

    #

علامت `$` نشان‌دهنده یک کاربر معمولی است.

مثال:

    user@computer:~$

اما علامت `#` معمولاً نشان‌دهنده کاربر ریشه یا Root است.

مثال:

    root@computer:~#

کاربر Root بالاترین سطح دسترسی در لینوکس را دارد.

---

# اولین دستور لینوکس

اکنون اولین دستور خود را اجرا می‌کنیم.

دستور:

    pwd

این دستور مسیر پوشه فعلی را نمایش می‌دهد.

pwd مخفف:

    Print Working Directory

است.

مثال:

    $ pwd

خروجی:

    /home/amir

در این مثال، کاربر در مسیر:

    /home/amir

قرار دارد.

---

# چرا دانستن مسیر فعلی مهم است؟

در لینوکس تمام فایل‌ها و پوشه‌ها دارای مسیر مشخص هستند.

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

برای مثال:

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

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

---

# مشاهده فایل‌ها و پوشه‌ها

یکی از پرکاربردترین دستورات لینوکس:

    ls

است.

این دستور محتویات مسیر فعلی را نمایش می‌دهد.

ls مخفف:

    List

است.

مثال:

    $ ls

خروجی:

    Documents
    Downloads
    Projects

در این مثال، سه مورد موجود در پوشه فعلی نمایش داده شده‌اند.

---

# گزینه‌های دستور ls

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

گزینه‌ها به کاربر اجازه می‌دهند رفتار دستور را تغییر دهد.

---

## نمایش جزئیات بیشتر

دستور:

    ls -l

اطلاعات بیشتری درباره فایل‌ها نمایش می‌دهد.

مانند:

- سطح دسترسی
- مالک فایل
- حجم فایل
- تاریخ تغییر
- نام فایل

---

## نمایش فایل‌های مخفی

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

مثال:

    .bashrc

برای مشاهده آن‌ها:

    ls -a

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

گزینه:

    -a

مخفف:

    all

است.

---

## ترکیب گزینه‌ها

گزینه‌ها را می‌توان ترکیب کرد.

مثال:

    ls -la

این دستور:

- اطلاعات کامل فایل‌ها را نشان می‌دهد.
- فایل‌های مخفی را نیز نمایش می‌دهد.

---

# ساختار دستورات لینوکس

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

    command [options] [arguments]

مثال:

    ls -la /home

در این دستور:

    ls

نام دستور است.

    -la

گزینه‌های دستور هستند.

    /home

آرگومان دستور است.

---

# تفاوت Option و Argument

## Option

Option رفتار دستور را تغییر می‌دهد.

مثال:

    -l

یا:

    -a

---

## Argument

Argument مشخص می‌کند دستور روی چه چیزی اجرا شود.

مثال:

    ls /home

در اینجا:

    /home

آرگومان دستور است.

---

# تغییر مسیر در لینوکس

برای حرکت بین پوشه‌ها از دستور:

    cd

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

cd مخفف:

    Change Directory

است.

مثال:

    cd Documents

با اجرای این دستور وارد پوشه Documents می‌شویم.

---

# مسیر Home

هر کاربر در لینوکس یک پوشه شخصی دارد که Home Directory نامیده می‌شود.

مثال:

    /home/amir

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

    cd ~

علامت:

    ~

نماینده Home Directory است.

---

# بازگشت به پوشه قبلی

برای برگشت به پوشه والد:

    cd ..

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

دو نقطه:

    ..

به معنی یک سطح بالاتر است.

مثال:

اگر در مسیر:

    /home/amir/projects

باشیم:

با اجرای:

    cd ..

به مسیر:

    /home/amir

بازمی‌گردیم.

---

# مسیرهای Absolute و Relative

در لینوکس دو نوع مسیر وجود دارد.

---

# Absolute Path

مسیر کامل از ریشه سیستم است.

مثال:

    /home/amir/Documents

این مسیر مستقل از محل فعلی کاربر است.

---

# Relative Path

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

مثال:

    Documents

اگر در:

    /home/amir

باشیم، این مسیر به:

    /home/amir/Documents

اشاره می‌کند.

---

# علامت‌های مهم مسیرها

در لینوکس چند علامت بسیار مهم وجود دارد:

## ریشه سیستم

    /

نمایانگر Root Directory است.

---

## Home Directory

    ~

نمایانگر پوشه شخصی کاربر است.

---

## پوشه فعلی

    .

نمایانگر مسیر فعلی است.

---

## پوشه والد

    ..

نمایانگر یک سطح بالاتر است.

---

# دریافت اطلاعات درباره دستورات

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

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

    man command

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

مثال:

    man ls

این دستور صفحه راهنمای کامل دستور ls را نمایش می‌دهد.

---

# دستور help

برخی دستورات داخلی Shell دارای راهنمای داخلی هستند.

برای مشاهده آن:

    command --help

مثال:

    ls --help

---

# پاک کردن صفحه ترمینال

برای پاک کردن صفحه:

    clear

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

این دستور فقط ظاهر ترمینال را پاک می‌کند و اطلاعات سیستم را حذف نمی‌کند.

---

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

Shell دستورات قبلی کاربر را ذخیره می‌کند.

برای مشاهده تاریخچه:

    history

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

مثال:

    history

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

---

# استفاده از کلیدهای میانبر

ترمینال لینوکس میانبرهای بسیار مفیدی دارد.

## کلید بالا

با زدن:

    ↑

دستور قبلی نمایش داده می‌شود.

---

## کلید پایین

برای حرکت در تاریخچه دستورات:

    ↓

استفاده می‌شود.

---

## پاک کردن خط فعلی

برای پاک کردن دستور نوشته شده:

    Ctrl + U

---

## توقف اجرای دستور

برای متوقف کردن یک برنامه:

    Ctrl + C

استفاده می‌شود.

---

# اولین تمرین‌ها

برای تثبیت مطالب این فصل، دستورات زیر را تمرین کنید:

مشاهده مسیر فعلی:

    pwd

نمایش فایل‌ها:

    ls

نمایش فایل‌های مخفی:

    ls -a

نمایش جزئیات:

    ls -l

رفتن به Home:

    cd ~

مشاهده راهنمای ls:

    man ls

نمایش تاریخچه:

    history

---

# پروژه کوچک فصل

## ساخت محیط تمرینی لینوکس

در این پروژه یک ساختار ساده برای تمرین ایجاد می‌کنیم.

ابتدا یک پوشه بسازید:

    mkdir linux-practice

وارد آن شوید:

    cd linux-practice

چند پوشه ایجاد کنید:

    mkdir projects documents notes

محتویات را بررسی کنید:

    ls -la

مسیر فعلی را مشاهده کنید:

    pwd

با انجام این تمرین، کاربر با مفاهیم اولیه مسیر، پوشه و دستورات پایه آشنا می‌شود.

---

# جمع‌بندی فصل

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

یاد گرفتیم:

- Prompt چیست.
- ساختار دستورات لینوکس چگونه است.
- چگونه مسیر فعلی را پیدا کنیم.
- چگونه فایل‌ها و پوشه‌ها را مشاهده کنیم.
- چگونه بین مسیرها حرکت کنیم.
- چگونه از راهنمای دستورات استفاده کنیم.
- چگونه تاریخچه دستورات را مدیریت کنیم.

این مفاهیم ساده به نظر می‌رسند، اما پایه تمام مهارت‌های پیشرفته لینوکس هستند.

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

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

ساختار فایل سیستم لینوکس و نحوه مدیریت فایل‌ها.

🐧
