نقشهٔ فایلسیستم: مسیر، خانه و جابهجایی
در این درس ۲ بخش
هدف، پیشنیاز و محیط تمرین
در این درس با همان Ubuntu، Bash و حساب عادی ادامه میدهیم. باید اجرای فرمان و خواندن خروجی را از درس قبل بشناسید. هدف، ساختن یک نقشهٔ ذهنی از مسیرهاست: بدانید کجا هستید، مقصد را چگونه بنویسید و چگونه به خانه برگردید. تمرینها فقط جابهجایی و مشاهدهاند؛ فایل تازهای نمیسازیم و چیزی را حذف یا ویرایش نمیکنیم. اگر با SSH متصل شدهاید، این مسیرها متعلق به ماشین دوردست هستند، نه فایلهای رایانهٔ شخصی شما.
فایلسیستم را مانند درختی با شاخههای تودرتو تصور کنید. بالاترین نقطهٔ این درخت / نام دارد و «ریشه» خوانده میشود. پوشه یا directory میتواند فایلها و پوشههای دیگر را در خود داشته باشد. مسیر، نشانی رسیدن به یک مورد در این درخت است. در لینوکس از / برای جداکردن بخشهای مسیر استفاده میکنیم. ریشهٔ / را با حساب کاربری root یا پوشهٔ /root اشتباه نگیرید؛ این سه اصطلاح کاربردهای متفاوتی دارند.
پوشهٔ کاری، جایی است که پوسته اکنون در آن قرار دارد و pwd آن را گزارش میکند. فرمان ls فهرست محتویات آنجا را نشان میدهد؛ فرمان cd پوشهٔ کاری را عوض میکند. نمایش یک پوشه با ls به معنی واردشدن به آن نیست. ابتدا به پوشهٔ خانگی بروید و نام مسیر را بخوانید. پوشهٔ خانگی معمولاً محل فایلها و تنظیمات شخصی شماست؛ نام دقیق آن را از خروجی سیستم خود یاد بگیرید.
cd ~
pwd
lsدر Bash، ~ در ابتدای این آرگومان به پوشهٔ خانگی گسترش پیدا میکند. خروجی pwd ممکن است /home/ali باشد؛ این فقط نمونه است و نام ali را جای نام واقعی خود وارد نکنید. cd بدون آرگومان هم به خانه میرود. اگر خانه خالی باشد، ls معمولی ممکن است چیزی نشان ندهد؛ این الزاماً خطا نیست.
مسیر مطلق با / آغاز میشود و از ریشه نشانی میدهد؛ مثلاً /etc به پوشهای با همین نام در ریشه اشاره میکند. معنی این نشانی به محل فعلی شما وابسته نیست. مسیر نسبی از پوشهٔ کاری شروع میشود؛ مثلاً notes یعنی موردی به نام notes در همین پوشه. بنابراین cd notes تنها وقتی موفق است که چنین زیرپوشهای در محل فعلی وجود داشته باشد. تفاوت مسیر مطلق و نسبی را به نقطهٔ آغاز نشانی ربط دهید.
cd /
pwd
lsدر ریشه معمولاً etc، home، usr و var دیده میشود. /etc جای بسیاری از تنظیمات است؛ /home معمولاً خانهٔ کاربران عادی را دارد؛ /usr بخش بزرگی از برنامهها و دادههای مربوط را نگه میدارد؛ /var برای دادههای متغیر، از جمله بسیاری از گزارشهاست. شناخت نقش کلی کافی است؛ ساختار دقیق میان محیطها فرق میکند.
دو نام ویژه در حرکت نسبی کاربرد زیادی دارند: نقطهٔ تنها، یعنی .، به پوشهٔ فعلی اشاره میکند و دو نقطه، یعنی ..، به پوشهٔ والد اشاره دارد. cd . عملاً شما را همانجا نگه میدارد. cd .. یک سطح بالاتر میرود؛ وقتی در ریشه باشید، بالاتر از ریشه نمیروید. لازم نیست برای بازگشت به خانه تعداد زیادی .. بنویسید؛ cd یا cd ~ مسیر مستقیمتری برای برگشت به خانه است.
cd ~
cd .
pwd
cd ..
pwd
cd ~در فایلسیستم معمول لینوکس، بزرگی و کوچکی حروف تفاوت دارد: Notes و notes میتوانند دو نام جدا باشند. نام را از ls بررسی کنید. روی بعضی فایلسیستمهای اشتراکی یا مسیرهای ویندوزی رفتار ممکن است متفاوت باشد؛ تمرینها را در خانهٔ لینوکسی انجام دهید. نام دارای فاصله، مانند My Notes، در فرمان به نقلقول مناسب نیاز دارد.
نامهایی که با نقطه شروع میشوند، مانند .bashrc، در فهرست عادی ls پنهاناند؛ با گزینهٔ -a میتوانید آنها را هم ببینید. «پنهان» در اینجا قرارداد نمایش است و به معنی رمزگذاری یا حفاظت امنیتی نیست. بسیاری از این موارد تنظیمات برنامهها هستند. دیدن نامشان برای این درس کافی است و نباید محتوایشان را تغییر دهید. دو ورودی . و .. هم ممکن است در فهرست کامل دیده شوند؛ آنها همان اشارههای پوشهٔ فعلی و والد هستند.
cd ~
ls -aتمرین، پاسخ و چکلیست
تمرین: پیش از اجرا پیشبینی کنید بعد از cd ~ و سپس cd .، خروجی pwd به خانه اشاره میکند یا والد؟ بعد حدس بزنید cd .. چه تغییری ایجاد میکند. فرمانهای جعبهٔ سوم را دوباره اجرا و پیشبینی را با نتیجه مقایسه کنید. در پایان، دو فهرست ls و ls -a را در خانه مقایسه کنید و نام یک مورد آغازشده با نقطه را در یادداشتتان ثبت کنید؛ نیازی به بازکردن آن نیست.
پاسخ تشریحی: cd . محل را عوض نمیکند، بنابراین pwd هنوز خانه را نشان میدهد. پس از cd .. معمولاً والد خانه، مانند /home، دیده میشود؛ مقدار دقیق به مسیر خانهٔ شما وابسته است. cd ~ دوباره شما را به خانه میرساند. فهرست دوم نامهای آغازشده با نقطه را هم نشان میدهد. چکلیست: محل فعلی را با pwd مییابم؛ مسیر مطلق و نسبی را تشخیص میدهم؛ خانه را با ریشه اشتباه نمیگیرم؛ به حروف نامها دقت میکنم؛ میدانم پنهانبودن یک نام، امنیت ایجاد نمیکند.
منابع رسمی انگلیسی: Bourne Shell builtins: cd and pwd: https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html ، Tilde Expansion: https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html ، GNU ls: Which files are listed: https://www.gnu.org/software/coreutils/manual/html_node/Which-files-are-listed.html ، Filesystem Hierarchy Standard: https://specifications.freedesktop.org/fhs/latest-single/ ، و Ubuntu command line tutorial: https://ubuntu.com/tutorials/command-line-for-beginners . توضیحها و مسیر تمرین مستقل تنظیم شدهاند.
تألیف و مثالهای اختصاصی: تحریریه درسآوند. منابع انگلیسی برای بررسی مفاهیم و مطالعهٔ تکمیلی معرفی شدهاند.
متن درسهای عمومی را بدون ورود بخوانید.