# فصل سوم: پیمایش در ترمینال لینوکس

## Linux Navigation

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

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

در محیط گرافیکی، کاربران معمولاً با باز کردن پنجره‌ها و کلیک کردن میان پوشه‌ها جابه‌جا می‌شوند.

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

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

---

# مفهوم Current Directory

در هر لحظه، ترمینال در یک مسیر مشخص قرار دارد.

به این مسیر:

Current Directory

یا:

Working Directory

گفته می‌شود.

به زبان ساده، Current Directory همان پوشه‌ای است که در حال حاضر در آن قرار دارید.

برای مثال، اگر ترمینال در مسیر زیر باشد:
```bash
/home/username/projects
```
هر دستوری که اجرا می‌کنید، به صورت پیش‌فرض نسبت به همین مسیر انجام می‌شود.

---

# دستور pwd

برای مشاهده مسیر فعلی از دستور:
```bash
pwd
```
استفاده می‌کنیم.

pwd مخفف:

Print Working Directory

است.

این دستور مسیر کامل پوشه‌ای که در آن قرار دارید را نمایش می‌دهد.

مثال:
```bash
pwd
```
خروجی:
```bash
/home/username
```
یعنی کاربر در پوشه home خود قرار دارد.

---

# دستور cd

مهم‌ترین دستور برای حرکت در فایل سیستم لینوکس:
```bash
cd
```
است.

cd مخفف:

Change Directory

است.

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

---

# رفتن به یک پوشه مشخص

برای ورود به یک پوشه، مسیر آن را بعد از cd قرار می‌دهیم.

مثال:
```bash
cd Documents
```
اگر پوشه Documents در مسیر فعلی وجود داشته باشد، وارد آن می‌شویم.

---

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

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

مثال:
```bash
cd /home/username/Documents
```
در این حالت بدون توجه به مسیر فعلی، مستقیماً وارد مسیر مشخص شده می‌شویم.

---

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

برای بازگشت به پوشه والد از علامت:
```bash
..
```
استفاده می‌کنیم.

مثال:

اگر در مسیر زیر باشیم:
```bash
/home/username/Documents
```
و دستور زیر را اجرا کنیم:
```bash
cd ..
```
به مسیر زیر منتقل می‌شویم:
```bash
/home/username
```
---

# بازگشت به Home Directory

یکی از کاربردی‌ترین حالت‌های cd، بازگشت سریع به Home کاربر است.

برای این کار می‌توان نوشت:
```bash
cd ~
```
علامت:
```bash
~
```
نمایانگر Home Directory کاربر فعلی است.

برای مثال:
```bash
cd ~
```
کاربر را به مسیر:
```bash
/home/username
```
منتقل می‌کند.

---

# اجرای cd بدون مسیر

اگر فقط دستور:
```bash
cd
```
را وارد کنیم، بدون هیچ مسیر اضافی، به Home Directory منتقل می‌شویم.

مثال:
```bash
cd
```
نتیجه:
```bash
/home/username
```
---

# تفاوت مسیر Absolute و Relative در پیمایش

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

## Absolute Path

مسیر از Root شروع می‌شود.

مثال:
```bash
cd /usr/bin
```
این مسیر همیشه به همان مکان مشخص اشاره می‌کند.

---

## Relative Path

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

مثال:

اگر در مسیر:
```bash
/home/username
```
باشیم:
```bash
cd Projects
```
ما را به مسیر:
```bash
/home/username/Projects
```
می‌برد.

---

# مشاهده محتویات مسیر

قبل از ورود به یک پوشه، معمولاً می‌خواهیم بدانیم چه فایل‌ها و پوشه‌هایی داخل آن وجود دارد.

برای این کار از دستور:
```bash
ls
```
استفاده می‌کنیم.

مثال:
```bash
ls
```
خروجی ممکن است شامل موارد زیر باشد:
```bash
Documents

Downloads

Pictures

Projects
```
---

# ترکیب دستورات ls و cd

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

روند معمول:

ابتدا مشاهده محتویات:
```bash
ls
```
سپس ورود به پوشه مورد نظر:
```bash
cd Projects
```
و دوباره بررسی محتویات:
```bash
ls
```
این چرخه پایه اصلی کار با فایل سیستم در ترمینال است.

---

# مشاهده مسیر هنگام کار

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

مثال:
```bash
username@computer:~/Projects$
```
در این مثال:
```bash
username
```
نام کاربر است.
```bash
computer
```
نام سیستم است.
```bash
~/Projects
```
مسیر فعلی است.
```bash
$
```
نشان‌دهنده اجرای Shell توسط یک کاربر معمولی است.

---

# تفاوت / و ~

دو علامت مهم در مسیرهای لینوکس:
```bash
/
```
و:
```bash
~
```
هستند.
```bash
## /
```
به Root Directory اشاره می‌کند.

مثال:
```bash
cd /
```
کاربر را به بالاترین سطح فایل سیستم منتقل می‌کند.

---
```bash
## ~
```
به Home Directory کاربر اشاره می‌کند.

مثال:
```bash
cd ~
```
کاربر را به پوشه شخصی خود منتقل می‌کند.

---

# پیمایش چند مرحله‌ای

می‌توان در یک دستور چندین پوشه را طی کرد.

مثال:
```bash
cd Documents/Projects/Python
```
این دستور ابتدا وارد Documents می‌شود، سپس Projects و در نهایت Python.

---

# خطاهای رایج هنگام پیمایش

کاربران تازه‌کار معمولاً با چند خطای رایج مواجه می‌شوند.

## وارد کردن نام اشتباه پوشه

مثال:
```bash
cd Document
```
در حالی که نام واقعی:
```bash
Documents
```
است.

لینوکس به حروف بزرگ و کوچک حساس است.

یعنی:
```bash
Documents
```
با:
```bash
documents
```
متفاوت است.

---

## رفتن به مسیر غیر موجود

اگر مسیری وجود نداشته باشد:
```bash
cd example
```
با خطا مواجه می‌شود.

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

---

# اهمیت یادگیری Navigation

پیمایش در ترمینال فقط یادگیری چند دستور ساده نیست.

این مهارت پایه بسیاری از فعالیت‌های حرفه‌ای لینوکس است.

مدیران سیستم، برنامه‌نویسان، متخصصان امنیت و مهندسان DevOps دائماً با مسیرها و فایل‌ها کار می‌کنند.

بدون تسلط بر Navigation، مدیریت سیستم بسیار دشوار خواهد بود.

---

# تمرین‌های فصل سوم

## تمرین اول

مسیر فعلی خود را مشاهده کنید.

دستور:
```bash
pwd
```
---

## تمرین دوم

به Home Directory بازگردید.

دستور:
```bash
cd ~
```
---

## تمرین سوم

محتویات Home Directory را مشاهده کنید.

دستور:
```bash
ls
```
---

## تمرین چهارم

وارد پوشه /etc شوید.

دستور:
```bash
cd /etc
```
---

## تمرین پنجم

به Home Directory بازگردید.

دستور:
```bash
cd
```
---

# جمع‌بندی

در این فصل یاد گرفتیم:

- مفهوم Current Directory چیست.
- چگونه مسیر فعلی را مشاهده کنیم.
- چگونه میان پوشه‌ها حرکت کنیم.
- تفاوت Absolute Path و Relative Path چیست.
- چگونه از علامت‌های / ، ~ و .. استفاده کنیم.
- چگونه با ترکیب pwd، ls و cd فایل سیستم را مدیریت کنیم.

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

در فصل بعد، یاد می‌گیریم چگونه فایل‌ها و پوشه‌ها را ایجاد، حذف، انتقال و مدیریت کنیم.
