دستورات کار با دایرکتوری‌ها در لینوکس

دستورات کار با دایرکتوری‌ها در لینوکس
نوامبر 02, 202542 ثانیه زمان مطالعه

یاد بگیرید چگونه با دستورات mkdir، cd، ls، pwd و rm دایرکتوری‌ها را در لینوکس ایجاد، حذف و مدیریت کنید. آموزش کامل با مثال‌های عملی.

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

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

۱. ایجاد و حذف دایرکتوری‌ها

دستور mkdir (ایجاد دایرکتوری)

دستور mkdir برای ساخت یک یا چند دایرکتوری جدید استفاده می‌شود. اگر می‌خواهید ساختار پوشه‌ای تو در تو بسازید، گزینه -p را اضافه کنید.

فرمت دستور:

mkdir [گزینه‌ها] [نام دایرکتوری]

نمونه‌ها:

  • ایجاد یک پوشه ساده:

    mkdir my_directory
  • ایجاد چند پوشه همزمان:

    mkdir dir1 dir2 dir3
  • ایجاد دایرکتوری تو در تو:

    mkdir -p parent_dir/child_dir/grandchild_dir

دستور rmdir (حذف دایرکتوری‌های خالی)

برای حذف دایرکتوری‌هایی که خالی هستند از rmdir استفاده کنید.

rmdir [نام دایرکتوری]
  • حذف پوشه خالی:

    rmdir empty_directory
  • حذف چند پوشه خالی:

    rmdir dir1 dir2 dir3

نکته: اگر پوشه حاوی فایل باشد، rmdir خطا می‌دهد. برای حذف پوشه همراه با محتوا باید از دستور rm -r استفاده کنید.

دستور rm -r (حذف پوشه با محتوا)

برای حذف دایرکتوری‌ها همراه با تمام فایل‌ها و زیرپوشه‌هایشان از گزینه -r (recursive) استفاده کنید.

rm -r [نام دایرکتوری]
  • حذف پوشه به همراه محتوا:

    rm -r my_directory
  • حذف بدون تأیید (با اجبار):

    rm -rf my_directory

هشدار: این دستور بازگشت‌پذیر نیست! هنگام استفاده از rm -rf دقت زیادی داشته باشید.

۲. جابجایی بین دایرکتوری‌ها

دستور cd (تغییر دایرکتوری)

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

cd [مسیر دایرکتوری]
  • رفتن به یک دایرکتوری:

    cd my_directory
  • بازگشت به پوشه والد:

    cd ..
  • رفتن به ریشه:

    cd /
  • بازگشت به دایرکتوری خانگی:

    cd ~
  • بازگشت به مسیر قبلی:

    cd -

نکته: اجرای cd بدون هیچ آرگومانی شما را به پوشه خانگی منتقل می‌کند.

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

دستور ls

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

ls [گزینه‌ها]
  • نمایش فایل‌ها:

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

    ls -a
  • نمایش اطلاعات جزئی‌تر:

    ls -l
  • نمایش حجم‌ها به‌صورت خوانا:

    ls -lh
  • نمایش بازگشتی پوشه‌ها:

    ls -R

دستور pwd (نمایش مسیر فعلی)

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

pwd

خروجی مثلاً به صورت زیر خواهد بود:

/home/username/my_directory

۴. مفاهیم پیشرفته‌تر: ساختار دایرکتوری در کرنل، overlayfs و مدیریت حجم‌های منطقی

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

  • overlayfs و لایه‌بندی دایرکتوری‌ها: در overlayfs، چندین دایرکتوری به عنوان لایه‌های lower و upper روی هم سوار می‌شوند تا یک نمای واحد از سیستم فایل ایجاد کنند. گزینه‌ی metacopy=on باعث می‌شود که ابرداده‌ها در لایه‌ی بالایی ذخیره شوند. هنگام باز کردن یک فایل با open(O_RDONLY) که فقط متادیتا در لایه‌ی بالایی دارد، تابع کرنلی ovl_maybe_copy_up_data تعیین می‌کند که آیا نیاز به کپی‌کردن داده‌ها از لایه‌ی پایین‌تر (که به آن copy-up گفته می‌شود) وجود دارد. این مکانیسم پایه‌ی بسیاری از فناوری‌های کانتینری مانند Docker و Podman است.

  • LVM Thin Provisioning و مدیریت دایرکتوری‌های منطقی: در LVM (Logical Volume Manager) با قابلیت thin provisioning، می‌توان حجم‌های منطقی با تخصیص به‌موقع (on-demand) ایجاد کرد. اما هنگام ادغام (merge) یک snapshot، ترتیب گام‌های thin_commit و thin_rollback به pool و transaction_id بستگی دارد. در صورت قطع ناگهانی برق، این ترتیب می‌تواند باعث corruption در ابرداده‌های dm_thin_metadata شود که یکی از چالش‌های بحرانی در محیط‌های سازمانی است.

  • ذخیره‌سازی توزیع‌شده (DRBD و CEPH): در سیستم‌های پیشرفته، دایرکتوری‌ها می‌توانند روی چندین سرور توزیع شوند. DRBD در هنگام وقوع split-brain با auto-recovery، از الگوریتم after-sb-0pri برای انتخاب گره اصلی (primary) استفاده می‌کند که بر اساس compare-uuid یا نزدیک‌ترین زمان (closest-to-time) تصمیم‌گیری می‌کند. در CEPH نیز نقشه‌ی CRUSH و failure domain همراه با پارامتر primary affinity، نحوه‌ی نگاشت دایرکتوری‌ها و فایل‌ها به OSDها را تعیین می‌کند که تأثیر مستقیمی بر کارایی و تحمل‌پذیری خطا در فضای ابری دارد.

تمرینات عملی

  1. با mkdir یک ساختار پوشه‌ای به شکل projects/web/html ایجاد کنید.

  2. به مسیر خانگی خود بروید و با pwd مسیر فعلی را نمایش دهید.

  3. با ls -l محتویات پوشه فعلی را لیست کرده و دسترسی‌ها را تحلیل کنید.

  4. با rmdir یک دایرکتوری خالی حذف کنید و پیام خطای حذف پوشه پر را بررسی کنید.

  5. یک فایل درون پوشه‌ای بسازید و سپس با rm -r پوشه را حذف کنید.

پروژه عملی: مدیریت دایرکتوری پروژه‌های برنامه‌نویسی

هدف این پروژه، تمرین مدیریت پوشه‌ها در لینوکس است:

  1. برای هر پروژه پوشه‌ای جداگانه با mkdir بسازید.

  2. بین پروژه‌ها با cd جابجا شوید.

  3. محتویات هر پروژه را با ls -R مشاهده کنید.

  4. در نهایت پروژه‌های قدیمی را با rm -r حذف کنید.

نتیجه‌گیری

در این بخش یاد گرفتید چگونه دایرکتوری‌ها را در لینوکس بسازید، حذف کنید، بین آن‌ها جابجا شوید و محتویاتشان را مشاهده کنید. تسلط بر این دستورات پایه‌ای، اساس کار حرفه‌ای با ترمینال لینوکس است. همچنین با مفاهیم پیشرفته‌تری مانند overlayfs، LVM thin provisioning و مدیریت DRBD/CEPH آشنا شدید که شما را برای مواجهه با چالش‌های واقعی در محیط‌های سازمانی و ابری آماده می‌کند.

سؤالات متداول درباره مدیریت دایرکتوری‌ها در لینوکس

۱. تفاوت بین rmdir و rm -r چیست؟

دستور rmdir فقط دایرکتوری‌های خالی را حذف می‌کند، اما rm -r کل دایرکتوری و محتوای آن را حذف می‌کند.

۲. آیا می‌توان چند پوشه را همزمان ساخت؟

بله، با استفاده از دستور mkdir dir1 dir2 dir3 می‌توانید چند دایرکتوری را به صورت همزمان بسازید.

۳. گزینه -p در mkdir چه کاربردی دارد؟

گزینه -p به شما اجازه می‌دهد پوشه‌های تو در تو را به‌صورت خودکار ایجاد کنید حتی اگر پوشه‌های والد وجود نداشته باشند.

۴. چگونه به مسیر قبلی بازگردیم؟

با دستور  - cd  می‌توانید به آخرین مسیر کاری خود برگردید.

۵. چگونه فایل‌ها و پوشه‌های مخفی را ببینیم؟

با دستور ls -a می‌توانید فایل‌هایی که با نقطه (.) شروع می‌شوند را مشاهده کنید.