در سیستمهای کامپیوتری دادهها در قالب فایل در حافظه ذخیره میشوند. هر فایل ممکن است درون یک دایرکتوری باشد و هر دایرکتوری ممکن است درون دایرکتوریهای دیگر باشد. یک مسیر نشان دهندهی یک فایل یا دایرکتوری خاص در این ساختار است. اکثر سیستم عاملهای شبه یونیکس یک دایرکتوری ریشه دارند که شامل تمام فایلها و دایرکتوریهای دیگر به صورت مستقیم یا غیر مستقیم میشود. در این سیستم عاملها ساختار زیر برای آدرس دهی فایلها استفاده میشود:
همچنین ساختار زیر برای آدرس دهی دایرکتوریها استفاده میشود:
برای مثال /etc/passwd
فایلی به نام passwd
در دایرکتوری etc
در دایرکتوری ریشه را نشان میدهد. آدرسهای صحیح دیگر /home/user/pictures/digikala
و یا فقط /file
هستند. در این سوال ما فقط فایلها و دایرکتوریهایی را در نظر میگیریم که نامشان متشکل از حروف کوچک انگلیسی (a تا z) است.
دایرکتوری ریشه حالت خاصی است که با /
نشان داده میشود.
هنگامی که کاربر در حال کارکردن با چنین سیستم عاملیست یک دایرکتوری به عنوان دایرکتوری فعلی در نظر گرفته میشود. اینگونه کاربر میتواند بدون مشخص کردن مسیر کامل دایرکتوری فعلی به فایلهای درون آن دسترسی پیدا کند. به این روش آدرس دهی، آدرس دهی نسبی گفته میشود. برای مثال اگر دایرکتوری فعلی /home/user/pictures
باشد، کاربر میتواند به فایل /home/user/pictures/digikala
از طریق آدرس digikala
دسترسی داشته باشد. توجه کنید که به دلیل عدم وجود /
در ابتدای آدرس، مشخص میشود که مسیر از دایرکتوری فعلی شروع میشود. همچنین دایرکتوریهای داخلی نیز میتوانند اینگونه آدرس دهی شوند. برای مثال /home/user/pictures/others/digipay
میتواند به صورت others/digipay
آدرس دهی شود.
نکتهی جالبتر این است که میتوانیم با این روش به فایلهای خارج از دایرکتوری فعلی نیز دسترسی داشته باشیم. به طور دقیقتر آدرس ..
به معنی دایرکتوریای است که یک سطح از دایرکتوری فعلی بالاتر است. همچنین ../..
به معنی دایرکتوری دو سطح بالاتر از دایرکتوری فعلی است. حال اگر دایرکتوری فعلی /home/user/pictures
باشد و شما میخواهید به /home/top/data/file
دسترسی پیدا کنید میتوانید آدرس را به صورت ../../top/data/file
بیان کنید.
به شما آدرس یک فایل که میخواهید به آن دسترسی پیدا کنید و آدرس دایرکتوری فعلی داده میشود. شما باید کوتاهترین آدرس نسبی برای دسترسی به آن فایل را پیدا کنید. برای مثال اگر دایرکتوری فعلی /home/user/pictures
باشد شما باید ../movies/title
را به ../../user/movies/title
در هنگام دسترسی به فایل /home/user/movies/title
ترجیح دهید.
بعضی از فایلها و دایرکتوریها ممکن است نامهای مشترک داشته باشند، اما غیر ممکن است که دو فایل یا دو دایرکتوری یا یک فایل و یک دایرکتوری، با نام یکسان درون یک دایرکتوری وجود داشته باشد. پس کلیهی آدرسها یکتا هستند. ورودیهای مساله آدرسهای درست هستند و در مسیرهای داده شده تناقض وجود نخواهد داشت. برای مثال آدرس فعلی /home/user/digikala/other
و فایل /home/user/digikala
با هم در تناقض هستند. زیرا همزمان یک دایرکتوری و فایل با نام digikala
در دایرکتوری user
وجود دارد.
در سطر اول ورودی آدرس فایل مورد نظر و در سطر دوم آدرس دایرکتوری فعلی داده شده است. طول هیچ آدرسی بیشتر از ۵۰ کاراکتر نخواهد بود. تضمین میشود آدرسها درست و دارای تناقض نخواهند بود. نام فایلها و دایرکتوریها نیز فقط از حروف کوچک انگلیسی (a تا z) تشکیل شده است.
در تنها خط خروجی آدرس نسبی فایل مورد نظر را از دایرکتوری فعلی چاپ کنید.
مثال صورت سوال.
مثال دیگر صورت سوال.
دایرکتوری ریشه را فراموش نکنید.
نام برخی فایلها و دایرکتوریها ممکن است یکسان باشد.
نام فایلها یا دایرکتوریها ممکن است root
باشد و به این معنی نیست که دایرکتوری ریشه هستند.