دستور cd در لینوکس چیست؟ – توضیح کامل + هشت مثال کاربردی

یکی از پایه‌ای ترین کارهایی که هر کاربر کامپیوتر در هر سیستم عاملی انجام می‌دهد گشت و گذار بین فایل‌های ذخیره شده است. ابزارهای مدیریت فایل انجام این کار را توسط رابط کاربری گرافیکی بسیار ساده می‌کنند. اما در محیط رابط کاربری خط فرمان یا «Command Line Interface | CLI» نیز لازم است بتوانید فایل‌ها و دایرکتوری‌های مختلف را بررسی کنید. دستور cd در لینوکس به شما این امکان را می‌دهد که بین دایرکتوری‌های مختلف جابه‌جا شوید و محتویات آن‌ها را بررسی کنید. از همین دستور در محیط خط فرمان ویندوز و یا ترمینال سیستم عامل مک نیز می‌توانید استفاده کنید.

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

دستور cd در لینوکس چیست؟

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

دستور cd در لینوکس یکی از دستورهای پایه‌ای است که از آن برای تغییر دایرکتوری فعال کنونی استفاده می‌شود. برای کاربرانی که از ترمینال لینوکس استفاده می‌کنند این دستور یکی از پرکاربردترین دستورها است که روزانه بارها از آن استفاده می‌کنند و به همین دلیل لازم است که آشنایی بهتر و دقیق‌تری با این دستور داشته باشیم. نام این دستور کوتاه شده عبارت «Change Directory» است و همان‌طور که گفتیم دایرکتوری فعال کنونی را با استفاده از آن تغییر می‌دهیم. اما پیش از ادامه بحث لازم است بدانیم منظور از «دایرکتوری فعال کنونی» چیست؟ مقدار دایرکتوری فعال کنونی در لینوکس در متغیری با نام PWD ذخیره می‌شود.

متغیر PWD در لینوکس چیست؟

متغیر PWD در لینوکس مسیر مطلق دایرکتوری فعال کنونی را ذخیره می‌کند. به مثال زیر دقت کنید:

مثالی از استفاده لینوکس از دایرکتوری فعال کنونی در صورت مشخص نشدن دایرکتوری برای دستور ls

در این مثال ابتدا دستور ls در لینوکس را فراخوانی کرده‌ایم. چون هنگام فراخوانی دستور ls دایرکتوری مورد استفاده توسط این دستور را مشخص نکرده‌ایم این دستور از دایرکتوری فعال کنونی استفاده خواهد کرد. به قسمتی از تصویر که با خط قرمز مشخص شده است دقت کنید. این مسیر نشان دهنده دایرکتوری فعال کنونی است. در مثال فوق می‌بینیم که مسیر ‍‍~/faradars

  به عنوان دایرکتوری فعال کنونی مورد استفاده قرار گرفته است. این مسیر در واقع یک مسیر مطلق است. در ترمینال لینوکس دایرکتوری home مربوط به هر کاربر با کاراکتر ‍‍~

  مشخص می‌شود.

با دقت به قسمتی که با خط سبز مشخص شده است می‌بینیم عنوان soroosh در قسمت مربوط به نام کاربری که فرمان را اجرا می‌کند درج شده است. در نتیجه مسیر ‍‍~

  به دایرکتوری home این کاربر اشاره می‌کند. به این ترتیب می‌دانیم مسیر ‍~/faradars

  که در این دستور به عنوان دایرکتوری فعال کنونی مورد استفاده قرار گرفته است معادل مسیر مطلق /home/soroosh/faradars

  است.

این مسیر همیشه در یک متغیر محلی با نام PWD

  ذخیره می‌شود و دستورهای مختلف لینوکس به عنوان دایرکتوری فعال کنونی از آن استفاده می‌کنند. در تصویر بالا می‌بینیم که با استفاده از دستور echo $PWD

   مقدار این متغیر را در ترمینال نمایش داده‌ایم. خروجی این دستور با رنگ زرد در تصویر مشخص شده است. همچنین در اسکریپت‌های shell نیز می‌توانید از این متغیر برای دسترسی به مسیر دایرکتوری فعال کنونی استفاده کنید.

زمانی که با استفاده از دستور cd در لینوکس مسیر دایرکتوری فعال کنونی را تغییر می‌دهید مقدار متغیر PWD

  نیز تغییر می‌کند.

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

ساختار کلی دستور cd در لینوکس به صورت زیر است:

cd [option] [dir]

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

در قسمت option می‌توانیم یکی از دو نشانه -L

  یا -P

  را استفاده کنیم. دستور cd در لینوکس به صورت پیش‌فرض از نشانه -L

  استفاده می‌کند. در صورتی که در قسمت dir دایرکتوری جدید را مشخص نکنیم دستور cd دایرکتوری فعال کنونی را به دایرکتوری home متعلق به کاربر فعلی تغییر می‌دهد. این مسیر را با کاراکتر ‍~

  نیز می‌توانیم مشخص کنیم.

در مثال زیر می‌بینیم که پس از فراخوانی دستور cd بدون آرگومان، دایرکتوری فعال کنونی به مسیر /home/soroosh/

  تغییر داده شده است:

مثال فراخوانی دستور cd در لینوکس بدون آرگومان

با وارد کردن دستور زیر نیز نتیجه مشابه حاصل می‌شد:

cd ~

مسیرهای مطلق و نسبی

هنگام به کار بردن دستور cd در لینوکس می‌توانیم از مسیرهای نسبی یا مطلق استفاده کنیم. منظور از مسیر مطلق مسیری، مسیر کاملی است که به یک دایرکتوری یا یک فایل ختم می‌شود و از دایرکتوری ریشه که در لینوکس با کاراکتر /

  مشخص می‌شود، شروع می‌شود. در مثال بالا می‌بینیم که مسیر مطلق دایرکتوری faradars برابر با /home/soroosh/faradars

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

ساختار دایرکتوری‌های زیر را در نظر بگیرید:

- /home/faradars
- /home/faradars/articles
- /home/faradars/images
- /home/faradars/articles/linux
- /home/faradars/articles/network
- /home/faradars/images/linux

فرض کنید در حال حاضر مسیر /home/faradars

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

cd /home/faradars/articles

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

cd articles

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

مثال کاربرد دستور cd در لینوکس

در ادامه، مثال‌هایی از کاربرد دستور cd در لینوکس را بررسی می‌کنیم. توصیه می‌کنیم برای آشنایی بیشتر با دستور cd ترمینال لینوکس را باز کرده و خودتان مثال‌ها را اجرا کنید. برای ساخت دایرکتوری‌هایی که در این مثال‌ها از آن‌ها استفاده خواهیم کرد ابتدا دستور زیر را اجرا کنید:

cd ~

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

mkdir faradars faradars/articles faradars/images faradars/articles/linux faradars/articles/network faradars/images/linux

پس از وارد کردن دستور فوق دایرکتوری‌هایی که در این مثال از آن‌ها استفاده خواهیم کرد در دایرکتوری home شما ساخته خواهند شد. با وارد کردن دستور زیر وارد دایرکتوری faradars شوید:

cd faradars

با وارد کردن دستور زیر می‌توانید تمام دایرکتوری‌هایی که درون دایرکتوری faradars ساخته‌اید را بررسی کنید:

ls -R

پس از پایان مطالعه این مقاله برای حذف دایرکتوری‌های ساخته شده دستور زیر را اجرا کنید:

rm -rd faradars

ورود به دایرکتوری home

در محیط ترمینال لینوکس فارغ از مقدار دایرکتوری فعال کنونی ، هر زمان دستور زیر را وارد کنید وارد دایرکتوری home متعلق به کاربر فعال خواهید شد:

cd ~

پیش از این دیدیم که با وارد کردن دستور cd بدون آرگومان هم نتیجه مشابهی حاصل خواهد شد. با وارد کردن دستور cd به صورت زیر می‌توانید وارد دایرکتوری home متعلق به کاربر با نام کاربری username شوید:

cd ~username

همچنین از کاراکتر ‍~

  در آدرس‌های مطلق نیز می‌توانیم استفاده کنیم. با استفاده از دستور زیر مجددا وارد دایرکتوری faradars خواهیم شد:

cd ~/faradars

به این نکته توجه کنید که نتیجه اجرای دستور فوق توسط کاربران مختلف، مقدار دایرکتوری فعال کنونی را به دایرکتوری‌های یکسانی تغییر نمی‌دهد. مثلا اگر کاربری با نام کاربری user1 دستور فوق را اجرا کند وارد مسیر /home/user1/faradars

  خواهد شد و اگر کاربر دیگری با نام کاربری anotheruser همان دستور را اجرا کند، مقدار دایرکتوری فعال کنونی به /home/anotheruser/faradars

  تغییر خواهد کرد.

ورود به دایرکتوری root

دایرکتوری ریشه یا «root» در لینوکس با کاراکتر /

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

cd /

از آنجا که مسیر /

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

تغییر دایرکتوری فعال به مقدار قبلی

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

cd -

مثلا اگر دو دستور زیر را به ترتیب وارد کنید، پس از ورود به دایرکتوری root، مجددا به دایرکتوری قبلی باز خواهید گشت.

cd /

دستور دوم در ادامه آورده شده است.

cd -

ورود به دایرکتوری والد

هنگام استفاده از مسیرهای نسبی استفاده با استفاده از ..

  می‌توانیم به دایرکتوری والد اشاره کنیم. با استفاده از دستور زیر وارد مسیر ~/faradars/articles/linux

  شوید.

‍‍cd ~/faradars/articles/linux

حالا برای انتخاب مسیر ‍~/faradars/articles

  (محل قرار گرفتن دایرکتوری فعال کنونی) به عنوان دایرکتوری فعال کافی است دستور زیر را وارد کنید:

cd ..

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

  در نوشتن مسیرهای نسبی استفاده کنید. مثلا اگر در حال حاضر که مقدار دایرکتوری فعال کنونی برابر ‍~/faradars/articles

  است، بخواهیم وارد مسیر ~/faradars/images

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

cd ..
cd images

با استفاده از ..

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

cd ../images

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

  در مسیرهای نسبی استفاده کنیم. مثلا اگر مقدار دایرکتوری فعال کنونی برابر ~/faradars/articles/linux

  باشد برای ورود به مسیر ‍~/faradars/images

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

cd ../../images

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

در صورتی که نام یک دایرکتوری حاوی کاراکتر فاصله یا «space» باشد، باید نام آن دایرکتوری را درون کاراکترهای

  یا

  قرار دهیم. این موضوع به این دلیل ضرورت دارد که در ترمینال لینوکس آرگومان‌های مختلف با یک کاراکتر فاصله از همدیگر جدا می‌شوند. به این ترتیب برای ورود به دایرکتوری با نام linux articles

  باید از دستور cd به صورت زیر استفاده کنیم:

cd "linux articles"

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

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

cd linux articles

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

دستور cd در لینوکس در حالت عادی لینک‌های نمادین را دنبال می‌کند. برای جلوگیری از دنبال کردن لینک‌های نمادین و استفاده از ساختار فیزیکی دایرکتوری‌ها باید از نشانه -P

  استفاده کنیم. به مثال زیر دقت کنید:

مثالی از استفاده از دستور cd در لینوکس به صورت cd -P

در این مثال ابتدا یک لینک نمادین یا «Symbolic link» برای مسیر ~/faradars/articles/linux

  ساخته‌ایم و آن را در مسیر ~/faradars/linux-articles

  ذخیره کرده‌ایم. دستور مربوط به این کار در تصویر با رنگ زرد مشخص شده است.

می‌بینیم که پس از استفاده از دستور cd برای ورود به دایرکتوری linux-articles دایرکتوری فعال کنونی برابر با ‍‍‍~/faradars/linux-articles

  مقداردهی شده است. به این معنی که دایرکتوری linux-articles، اگرچه صرفا یک میانبر برای مسیر ~/faradars/articles/linux

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

اما چنانچه از دستور cd در لینوکس به صورت زیر استفاده کنیم (مشخص شده با رنگ قرمز) می‌بینیم مقدار دایرکتوری فعال کنونی، برابر با مسیری خواهد شد که این لینک نمادین به آن اشاره می‌کند. به این ترتیب نشانه -P

  باعث شده است که دستور cd تنها از ساختار فیزیکی دایرکتوری‌ها استفاده کرده و لینک‌های نمادین را دنبال نکند. مقدار دایرکتوری فعال کنونی پس از استفاده از دستور cd با نشانه -P

  در تصویر بالا با رنگ آبی مشخص شده است.

cd -P linux-articles

تغییر دایرکتوری فعال و بررسی محتویات دایرکتوری

اگر دستور ls را به وسیله نشانه &&

  به دستور ls الحاق کنیم، می‌توانیم همزمان دایرکتوری فعال کنونی را تغییر داده و محتویات دایرکتوری فعال جدید را نیز بررسی کنیم. به طور مثال برای ورود به مسیر /etc

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

cd /etc && ls

دسترسی آسان‌تر به مسیرهای پرکاربرد

فرض کنید دایرکتوری‌های موجود در مسیر ‍‍~/faradars

  دایرکتوری‌های پرکاربردی باشند، در این صورت روزانه بارها باید از دستورهای cd ~/faradars/images

  یا cd ~/faradars/articles

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

با مقداردهی متغیر CDPATH

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

برای اضافه کردن مسیر ~/faradars

  در متغیر CDPATH

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

export CDPATH="~/faradars"

پس  از وارد کردن دستور فوق فارغ از مقدار دایرکتوری فعال کنونی، هر زمان که دستور زیر را وارد کنیم وارد مسیر ‍~/faradars/articles

 خواهیم شد.

cd articles

ورود به مسیر ‍~/faradars/articles

  به این علت اتفاق می‌افتد که دستور cd برای تبدیل مسیر نسبی articles

  به یک مسیر مطلق ابتدا در میان دایرکتوری‌های ذخیره شده در متغیر CDPATH

  جستجو می‌کند و پس از آن در میان دایرکتوری‌های فرزند دایرکتوری فعال کنونی. به این ترتیب می‌توانیم دسترسی به دایرکتوری‌های پرکاربرد توسط دستور cd در لینوکس را تسهیل کنیم.

اما این راهکار باعث بروز یک مشکل نیز می‌شود، در صورتی که بین نام دایرکتوری‌های فرزند دایرکتوری فعال کنونی و دایرکتوری‌های فرزند دایرکتوری‌‌های ذخیره شده در متغیر CDPATH

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

export CDPATH=".:~/faradars"

دستور بالا مسیر .

  را به مسیرهای ذخیره شده در متغیر CDPATH

  اضافه می‌کند. لازم است به این نکته توجه کنیم که همیشه در صورتی که چند دایرکتوری را در متغیر CDPATH

  ذخیره کرده باشیم، مسیر .

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

  نیز همان‌طور که در این مثال مشخص است برای جداکردن مسیرهای مختلف ذخیره شده در متغیر CDPATH

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

مسیر .

  در واقع مسیر دایرکتوری فعال کنونی است. اعمال این تغییر در متغیر CDPATH

  باعث می‌شود دستور cd همیشه ابتدا دایرکتوری فعال کنونی را جستجو کند و در صورتی که مسیر مشخص شده را در بین فرزندهای دایرکتوری فعال کنونی پیدا نکرد، به جستجوی سایر دایرکتوری‌های مشخص شده در متغیر CDPATH

  بپردازد.

مثالی از کاربرد متغیر CDPATH

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

مثالی از کاربرد متغیر cdpath به منظور تسهیل در دسترسی به دایرکتوری‌های پرکاربرد با دستور cd در لینوکس

اگرچه استفاده از متغیر CDPATH

  می‌تواند دسترسی به دایرکتوری‌های پرکاربرد را تسهیل کند، اما به این دلیل که ممکن است تداخل بین نام دایرکتوری‌ها باعث تغییر دایرکتوری فعال به دایرکتوری اشتباه شود، بهتر است پیش از اجرای اسکریپت‌های shell با استفاده از دستور زیر مقدار این متغیر را به یک رشته خالی تغییر بدهید:

export CDPATH=""

خلاصه مطلب و نحوه دسترسی به راهنمای دستور cd در لینوکس

ترمینال لینوکس یک رابط متنی قدرتمند برای مدیریت کامپیوتر است. از مدیریت فایل‌ها تا نظارت بر اجرای برنامه‌های کاربردی و سرویس‌های مختلف یا ویرایش فایل‌های تنظیمات سرورهای وب، تقریبا هر کاری را می‌توانیم از طریق ترمینال لینوکس انجام دهیم اما برای انجام ساده‌تر و سریع‌تر اغلب کارها لازم است دایرکتوری فعال کنونی را به مسیر مناسبی تغییر دهیم. دستور cd در لینوکس امکان ایجاد این تغییر را برای ما فراهم می‌کند. در جدول زیر مثال‌های پرکاربرد دستور cd را می‌بینیم:

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

دستور توضیحات
cd ~ ورود به دایرکتوری home کاربر فعال
cd ~username ورود به دایرکتوری home کاربر مشخص شده
cd / تغییر دایرکتوری فعال به دایرکتوری ریشه
cd – تغییر دایرکتوری فعال به مقدار قبلی
cd .. تغییر دایرکتوری فعال به دایرکتوری والد
cd “directory name” تغییر دایرکتوری به مسیر حاوی کاراکتر فاصله
cd directory name مشابه دستور بالا
cd -P directory تغییر دایرکتوری بدون دنبال کردن لینک‌های نمادین
cd directory && ls تغییر دایرکتوری فعال کنونی و نمایش محتویات دایرکتوری فعال جدید

علاوه بر این، هر زمان که نیاز داشته باشیم می‌توانیم با وارد کردن فرمان cd –help

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

source