یک اسکریپت Bash بنویس که همهٔ فایلهای داخل یک پوشهٔ مبدا را به صورت لینک سمبولیک در پوشهٔ مقصد ایجاد کند، نام فایلها حفظ شود و اگر لینک از قبل وجود داشت آن را بازنشانی کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:00 0.0
برای حل این مسئله از فرمان ln -s برای ساختن لینک سمبولیک و دستورات کمکی مثل mkdir -p برای ایجاد پوشهٔ مقصد، basename برای استخراج نام فایل و test/readlink -f برای گرفتن مسیر کامل استفاده کن. در اسکریپت آرگومانهای مبدا و مقصد را بگیر، با یک حلقه همهٔ فایلهای عادی را پردازش کن، قبل از ساخت لینک اگر فایل یا لینک موجود بود با rm -f آن را حذف کن و سپس ln -s را اجرا کن؛ در ضمن خطاها (مثل وجود نداشتن پوشهٔ مبدا) را بررسی و پیام مناسب چاپ کن. نکته: استفاده از مسیر مطلق برای لینکها و مدیریت مجوزها و فیلتر کردن فقط فایلها (نه دایرکتوریها) کمک میکند خروجی صحیحتری داشته باشی.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پایداری اسکریپت از set -euo pipefail استفاده کن و با find -type f ضمن فیلتر کردن فقط فایلها، هر فایل را آمادهٔ لینکسازی کن. نام هر فایل را با basename بگیر و لینک را در مسیر مطلق به پوشهٔ مقصد با همان نام بساز، مثلاً از mkdir -p استفاده کن تا پوشه وجود داشته باشد و سپس rm -f و بعد ln -s انجام بده. استفاده از readlink -f یا realpath برای بهدست آوردن مسیر مطلق مبدا و همچنین لینکدهی با مسیر مطلق خروجی را پایدار میکند. از نظر طراحی، مراقب وجود فضاها و کاراکترهای خاص در نامها باش و ورودیها را با quoting مناسب مدیریت کن.
گزارش