بخش ۹ – مسیر نسبی و مسیر مطلق در لینوکس

""

۱. مقدمه: چرا یاد گرفتن مسیرها انقدر مهم است؟

اگر بخوام صادق باشم، ۸۰٪ خطاهایی که تازه‌کارها در لینوکس می‌گیرند به خاطر اینه که نمی‌دونن الان دقیقاً کجا هستند یا مسیر (Path) رو اشتباه می‌زنن. تصور کن بهت میگم «برو کوچه سوم، پلاک ۱۲» ولی تو یادت نمیاد ما الان توی کدوم محله هستیم! طبیعی‌ه که گم بشی.

لینوکس هم دقیقاً مثل نقشه شهر کار می‌کنه:

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

درک مسیر کامل (مطلق) و مسیر کوتاه (نسبی) مثل درک آدرس خانه‌ها در یک شهره.


۲. مسیر چیست؟ (Path)

در لینوکس «فایل» و «پوشه» فقط یک اسم ندارند، بلکه یک «آدرس» دارند. این آدرس شامل:

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

مثال:

/home/ali/Documents/report.txt

اینجا:

  • / → ریشه‌ی سیستم
  • home → پوشهٔ مخصوص همهٔ خانه‌های کاربری
  • ali → خانهٔ کاربر ali
  • Documents → پوشهٔ اسناد
  • report.txt → فایل اصلی ما

بدون دانستن این مسیر، سیستم نمی‌دونه کدوم «report.txt» مد نظرته.


۳. مسیر مطلق (Absolute Path)

تعریف

مسیر مطلق همیشه از / شروع می‌شود و آدرس کامل یک فایل یا پوشه را از ریشه سیستم مشخص می‌کند.

چند مثال:

/home/ali/file.txt
/etc/passwd
/var/log/syslog

ویژگی‌ها:

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

تشبیه مسیر مطلق

فرض کن داری آدرس یک رستوران را به دوستی می‌دهی و می‌گویی:
«بیا به خیابان آزادی، پلاک ۲۰، رستوران A.»
مهم نیست دوستت الان کدام محله باشد، با این آدرس دقیق می‌تواند بیاید.


۴. مسیر نسبی (Relative Path)

تعریف

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

مثال

فرض کنیم الان در /home/ali هستیم:

pwd
/home/ali

اگر تایپ کنیم:

cd Documents

سیستم این را تفسیر می‌کند به:

/home/ali/Documents

تشبیه مسیر نسبی

این مثل این است که بگویی:
«برو کوچه پایینی و بعد به سمت چپ.»
واضح است که این دستور فقط وقتی معنی دارد که طرف مقابل بداند الان در کجای شهر (دایرکتوری جاری) است.


۵. چرا باید هر دو را بلد باشیم؟

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

مثلاً اگر بخواهی در یک اسکریپت حذف کنی، بهتر است مطلق بدهی:

rm -rf /home/ali/oldfiles

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

rm -rf oldfiles

(به شرطی که الان در /home/ali باشی.)


۶. کاراکترهای ویژه مسیرها

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

نمادمعنیمثال
.دایرکتوری فعلیls . → نمایش همین پوشه
..یک سطح بالاترcd .. از /home/ali/home
~مسیر خانگی کاربر فعلیcd ~/home/username
/ریشه سیستمcd / → ریشه

استفاده ترکیبی:

فرض کنیم در /home/ali/Documents هستیم:

cd ../Music

این اول می‌رود به /home/ali و بعد وارد Music می‌شود.


۷. پیدا کردن مسیر مطلق مکان فعلی (pwd)

گاهی با استفاده زیاد از مسیر نسبی، یادت می‌رود الان کجا هستی!
برای پیدا کردن مسیر کامل فعلیت:

pwd

(مخفف print working directory)

مثال:

pwd
/home/ali/Documents

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

۸.۱. با cd

  • مطلق:
cd /etc
  • نسبی:
cd Documents

۸.۲. با cp

فرض کن در /home/ali هستی:

cp /etc/hosts .

این فایل را از مسیر مطلق /etc/hosts به محل فعلی (.) کپی می‌کند.


۸.۳. با rm

  • خطرناک! مطلق:
rm -r /tmp/testfolder
  • نسبی:
rm -r testfolder

۹. داستان واقعی: فاجعه با مسیر نسبی

یک مدیر سیستم می‌خواست محتویات پوشه /tmp/test را حذف کند، دستور زیر را زد:

rm -rf test

فکر می‌کرد در /tmp است، اما اشتباهی در / (ریشه) بود…
نتیجه: تلاش برای حذف پوشه /test از ریشه (که البته نبود)، ولی می‌توانست کل سیستم را نابود کند.

درس: قبل از اجرای دستورات حساس، اول این را بزن:

pwd

۱۰. بهترین روش‌ها (Best Practices)

  1. برای اسکریپت‌ها و کارهای حساس → مسیر مطلق.
  2. برای کار روزمره و تایپ سریع → مسیر نسبی.
  3. استفاده زیاد از autocomplete با Tab برای جلوگیری از اشتباه.
  4. اگر اسمی فاصله دارد:
   cd "My Documents"

یا:

   cd My\ Documents
  1. قبل از rm -rf یا تغییرات مهم → pwd بزن.

۱۱. تمرین‌های عملی

تمرین ۱ – مطلق و نسبی

cd /
cd /home
cd /home/$USER
cd Documents

تمرین ۲ – استفاده از . و ..

pwd
cd ..
pwd

تمرین ۳ – مسیر خانگی با ~

cd ~

تمرین ۴ – ترکیب نسبی و مطلق

cp /etc/hosts ~/hosts_backup

۱۲. نکته پیشرفته: مسیر نسبی در اسکریپت‌ها

در Bash Script اگر بخواهی مسیر نسبی بدهی، همیشه دقت کن که اسکریپت از کجا اجرا می‌شود. بهتر است مسیر را به مطلق تغییر دهی:

MYDIR="$(cd "$(dirname "$0")" && pwd)"

۱۳. جمع‌بندی

  • مسیر مطلق → از / شروع شده، همیشه یکسان و دقیق.
  • مسیر نسبی → نسبت به محل فعلی.
  • نکات ایمنی: استفاده از pwd، تب تکمیل مسیر، استفاده از مطلق در کارهای حساس.
  • کاراکترهای ویژه (., .., ~) یادگیری را سریع‌تر می‌کند.
محمد وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *