دستور cd
این دستور یکی از دستورات پرکاربرد سیستم عامل لینوکس می باشد. دستور cd برگرفته از عبارت Change Directory بوده و برای جابجایی بین دایرکتوری های سیستم مورد استفاده قرار می گیرد. به دایرکتوری که در حال حاضر کاربر در آن قرار دارد، دایرکتوری جاری کاربر می گویند.
ساختار کلی دستور :
cd [Directory Name]
* دستور cd یکی از دستورات داخلی سیستم عامل می باشد.
type -a cd
cd is a shell builtin
cd is /bin/cd
cd is /usr/bin/cd
نکته : دستور داخلی، جزئی از خود Shell می باشد.
عملکرد دستور cd را با بیان چند مثال بررسی می کنیم.
* دستورات زیر سبب تغییر مکان کاربر می شوند.
home $ cd masih
~ $ cd learn/pdf
pdf $ cd /var/log/samba
samba $ pwd
/var/log/samba
* آشنایی کاربر با مفهوم آدرس مطلق و آدرس نسبی در استفاده از دستور cd ضروریست.
آدرس مطلق، آدرسی است که همواره با کاراکتر / شروع میشود، در حالیکه آدرس نسبی از دایرکتوری جاری کاربر آدرس دهی می شود. با یک مثال تفاوت آنها را می بینیم.
اگر مسیر جاری کاربر home/masih/ باشد برای رفتن به آدرس /home/masih/learn/pdf/linux ، آدرس نسبی و مطلق بصورت زیر می شود.
آدرس مطلق :
~ $ cd /home/masih/learn/pdf/linux
آدرس نسبی :
~ $ cd learn/pdf/linux
* چند نمونه از خطاهای رایج در استفاده از دستور cd را در زیر می بینیم.
خطای عدم دسترسی به یک دایرکتوری :
~ $ cd /root
bash: cd: /root: Permission denied
خطای عدم وجود یک دایرکتوری :
~ $ cd /rot
bash: cd: /rot: No such file or directory
* دستورات زیر برای تغییر دایرکتوری جاری به Home Directory کاربر استفاده می شوند.
cd
cd ~
cd $home
cd /home/username
* برای تغییر دایرکتوری جاری به Home Directory کاربری دیگر، بصورت زیر عمل می شود. (توسط دستور زیر با کاربر root به Home Directory کاربر masih تغییر مکان می دهیم.)
[root@mypc etc]$ cd ~masih
[root@mypc masih]$
نکته : بصورت پیش فرض هر دایرکتوری دارای دو دایرکتوری اشاره گر به نامهای . و .. میباشد که . به دایرکتوری جاری و .. به یک دایرکتوری قبل تر اشاره می کند. این فایلها Hidden می باشند.
* با توجه به نکته ی بالا دستورات زیر عملکرد یکسانی دارند.
cd etc
cd ./etc
cd etc/.
cd ./etc/.
* برای بازگشت به یک دایرکتوری قبل تر، از دستور زیر استفاده می شود.
pdf/linux $ cd ..
pdf $
* دستور زیر ابتدا به یک دایرکتوری قبل تر رفته و سپس به دایرکتوری oracle می رود.
pdf/linux $ cd ../oracle
pdf/oracle $
* به همین منوال برای بازگشت به دو و سه دایرکتوری قبل تر، بترتیب از دستورات زیر استفاده می شود.
cd ../..
cd ../../..
نکته : قرار دادن / در انتهای آدرس، در زمان استفاده از دستور cd اختیاری می باشد. به همین دلیل دستورات زیر عملکرد یکسانی دارند.
cd /home/masih
cd /home/masih/
* دستور زیر سبب بازگشت به مکان قبلی کاربر می شود.
cd -
* در صورتی که نام دایرکتوری حاوی کاراکتر فاصله باشد، از یکی روش های زیر برای رجوع به آن اسفاده می شود.
cd learn\ linux
cd ‘learn linux’
cd “learn linux”
* آدرس نسبی برای تغییر مکان، به دایرکتوری با نام – بصورت زیر می باشد.
cd ./-
* دستور زیر سبب ساخت یک دایرکتوری و رجوع به آن می شود.
cd mkdir linux && cd $_
نکته : علامت && اجرای دو دستور را ممکن می کند. و متغیر _$ آخرین آرگومان دستور قبل را برمی گرداند.
* متغیر CDPATH :
این متغیر در دستور cd مورد استفاده قرار میگیرد و در حالت پیشفرض بدون مقدار می باشد. عملکرد این متغیر سبب میشود که کاربر از هر مکانی به زیرمجموعه ی مکان های تعریف شده در متغیر CDPATH دسترسی نسبی داشته باشد. این موضوع را با مثال شرح می دهیم.
دایرکتوری learn از مسیر /home/masih، دارای سه دایرکتوری دیگر به نام های pdf,sound,video می باشد.
cd /home/masih/learn
ls
pdf sound video
با دستور زیر، مسیر /home/masih/learn در متغیر CDPATH تعریف می شود.
export CDPATH=$CDPATH:/home/masih/learn
اکنون کاربر از هر مکانی به زیرمجموعه ی دایرکتوری learn دسترسی نسبی دارد.
نکته : در صورت تایپ دستور cd و دو مرتبه فشردن کلید tab بصورت پشت سر هم، لیست دسترسی های نسبی مکان جاری نمایش می یابد.
cd /etc/sysconfig/console/
/etc/sysconfig/console $ cd [tab] [tab]
pdf sound video , . . .
/etc/sysconfig/console $ cd pdf
pdf $
نکته : برای تعریف چند مسیر در متغیر CDPATH از کاراکتر : بین آدرسها استفاده می شود.