فصل ۲ – مسیریابی (Navigation)

اولین چیزی که باید بیاموزیم (علاوه بر تایپ کردن) این است که چگونه در سیستم فایل لینوکس حرکت کنیم.
در این فصل با دستورات زیر آشنا خواهیم شد:


درک درخت سیستم فایل

مانند ویندوز، یک سیستم‌عامل شبه‌یونیکس مانند لینوکس فایل‌هایش را در ساختاری سلسله‌مراتبی (درختی) سازمان‌دهی می‌کند. این بدین معناست که فایل‌ها در الگوی درختی از پوشه‌ها (directories، یا در برخی سیستم‌ها folders) قرار دارند. هر پوشه می‌تواند شامل فایل‌ها و پوشه‌های دیگر باشد.

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

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


پوشه‌ی کاری فعلی (Current Working Directory)

بیشتر ما احتمالاً با مدیر فایل گرافیکی آشنا هستیم که سیستم فایل را شبیه یک درخت نشان می‌دهد (شکل ۱). دقت کنید که معمولاً درخت وارونه نمایش داده می‌شود: ریشه در بالا و شاخه‌ها در پایین.

اما خط فرمان تصویری ندارد. بنابراین برای حرکت در سیستم فایل باید ذهنی به آن نگاه کنیم.

تصور کنید سیستم فایل یک هزارتوی درختی وارونه است و ما درون یکی از شاخه‌های آن ایستاده‌ایم. در هر زمان در یک پوشه هستیم و می‌توانیم فایل‌های داخل آن، مسیر به پوشه‌ی والد (parent directory) و زیردایرکتوری‌هایش را ببینیم. پوشه‌ای که در آن ایستاده‌ایم پوشه‌ی کاری فعلی (Current Working Directory) نام دارد.

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

[me@linuxbox ~]$ pwd
/home/me

وقتی برای اولین بار وارد سیستم می‌شویم (یا نشست ترمینال را باز می‌کنیم)، پوشه‌ی کاری فعلی روی home directory ما تنظیم می‌شود. هر حساب کاربری پوشه‌ی خانگی مخصوص به خود را دارد و تنها جایی است که کاربر عادی اجازه‌ی نوشتن فایل دارد.


فهرست‌کردن محتویات پوشه

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

[me@linuxbox ~]$ ls
Desktop Documents Music Pictures Public Templates Videos

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


تغییر پوشه‌ی کاری

برای تغییر پوشه‌ی کاری (جایی که در هزارتوی درختی ایستاده‌ایم) از دستور cd استفاده می‌کنیم. کافی است cd و سپس مسیر پوشه‌ی مورد نظر را تایپ کنیم.

مسیر (pathname) مسیر حرکت از شاخه‌های درخت تا پوشه‌ی مورد نظر است. مسیرها دو نوع هستند: مطلق (absolute) و نسبی (relative).


مسیرهای مطلق (Absolute Pathnames)

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

مثلاً بیشتر برنامه‌های سیستم در /usr/bin قرار دارند:

[me@linuxbox ~]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin
[me@linuxbox bin]$ ls
... فهرست طولانی از فایل‌ها ...

حالا می‌بینیم که پوشه‌ی کاری به /usr/bin تغییر یافته و پر از فایل است. دقت کنید prompt نیز تغییر کرده و نام پوشه‌ی فعلی را نشان می‌دهد.


مسیرهای نسبی (Relative Pathnames)

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

بیایید دوباره به /usr/bin برویم:

[me@linuxbox ~]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

حالا می‌خواهیم یک پوشه به بالا برویم (به /usr). دو راه داریم:

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

به‌همین شکل می‌توانیم از /usr دوباره به /usr/bin برویم:

در بیشتر موارد، نوشتن "./" لازم نیست چون به‌طور ضمنی در نظر گرفته می‌شود. تایپ کردن:

[me@linuxbox usr]$ cd bin

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


میانبرهای مفید (cd Shortcuts)

در جدول زیر برخی میانبرهای مفید برای دستور cd آمده است:

میانبر نتیجه
cd تغییر به پوشه‌ی خانگی کاربر
cd - تغییر به پوشه‌ی کاری قبلی
cd ~user تغییر به پوشه‌ی خانگی کاربر دیگر. مثلاً cd ~bob → پوشه‌ی خانگی bob

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

  1. فایل‌هایی که با نقطه (.) آغاز می‌شوند مخفی هستند. یعنی ls آن‌ها را نمایش نمی‌دهد مگر اینکه از ls -a استفاده کنید. هنگام ایجاد حساب کاربری، چندین فایل مخفی در پوشه‌ی خانگی شما قرار می‌گیرند تا تنظیمات محیطی را انجام دهند. همچنین بسیاری از برنامه‌ها فایل‌های پیکربندی خود را به‌صورت مخفی در پوشه‌ی خانگی قرار می‌دهند.

  2. نام فایل‌ها و دستورات در لینوکس (مانند یونیکس) حساس به بزرگی و کوچکی حروف هستند. فایل‌های File1 و file1 دو فایل متفاوتند.

  3. لینوکس مفهومی به نام پسوند فایل (file extension) مانند برخی سیستم‌عامل‌ها ندارد. می‌توانید هر نامی برای فایل‌ها بگذارید. محتوای فایل از راه‌های دیگر تعیین می‌شود. البته بسیاری برنامه‌ها همچنان برای راحتی از پسوندها استفاده می‌کنند.

  4. هرچند لینوکس از نام‌های طولانی با فاصله و نویسه‌های خاص پشتیبانی می‌کند، بهتر است در نام فایل‌ها تنها از . (نقطه)، - (خط تیره) و _ (زیرخط) استفاده کنید. به‌ویژه از فاصله در نام‌ها پرهیز کنید. اگر می‌خواهید بین کلمات فاصله بگذارید، از زیرخط _ استفاده کنید. بعداً از خودتان متشکر خواهید بود!


جمع‌بندی

در این فصل یاد گرفتیم که شل چگونه ساختار پوشه‌های سیستم را مدیریت می‌کند. با مسیرهای مطلق و نسبی آشنا شدیم و دستورات پایه‌ای برای حرکت در ساختار فایل‌ها (pwd, ls, cd) را یاد گرفتیم.

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